在C程序优化中经常需要对变量的内存分配进行限定,在用#pragma DATA_ALIGN 及#pragma DATA_SECTION时发现其只能对程度的全局变量起作用,而不能对局部变量或子程序中的变量起作用,即使其被限定为static也不行。这个是因为局部变量是采用stack的内存分配机制?
有没有其它方法可以对局部变量的内存分配进行限定?
King Wang1:
好像#pragma DATA_ALIGN 是可以对局部变量起作用的。
#pragma DATA_SECTION是不能对局部变量起作用,原因就是因为C语言环境决定了局部变量只能从堆栈中分配,在函数生命周期结束后释放。因此不能在别的地方放置局部变量。
有什么需求是要求局部变量一定放在某个地方的么?
chenpjh:
回复 King Wang1:
象很多信号处理中的信号量,一般均在main()过程中进行定义,这样的话就不能用#pragma对这些变量的存贮分配进行限定。
目前,只好将这些需要限定的量放在了main()的外面,并对其进行限定。