TI中文支持网
TI专业的中文技术问题搜集分享网站

内存限定关键DATA_SECTION,DATA_ALIGN为什么只能对全局变量起作用?

在C程序优化中经常需要对变量的内存分配进行限定,在用#pragma DATA_ALIGN 及#pragma DATA_SECTION时发现其只能对程度的全局变量起作用,而不能对局部变量或子程序中的变量起作用,即使其被限定为static也不行。这个是因为局部变量是采用stack的内存分配机制?

有没有其它方法可以对局部变量的内存分配进行限定?

King Wang1:

好像#pragma DATA_ALIGN 是可以对局部变量起作用的。

#pragma DATA_SECTION是不能对局部变量起作用,原因就是因为C语言环境决定了局部变量只能从堆栈中分配,在函数生命周期结束后释放。因此不能在别的地方放置局部变量。

有什么需求是要求局部变量一定放在某个地方的么?

chenpjh:

回复 King Wang1:

象很多信号处理中的信号量,一般均在main()过程中进行定义,这样的话就不能用#pragma对这些变量的存贮分配进行限定。

目前,只好将这些需要限定的量放在了main()的外面,并对其进行限定。

赞(0)
未经允许不得转载:TI中文支持网 » 内存限定关键DATA_SECTION,DATA_ALIGN为什么只能对全局变量起作用?
分享到: 更多 (0)