This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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



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

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

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

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

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

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

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