我正在写一些C代码,当遇到一个方法时,我想知道参数变量存储在内存中的位置。 我了解以下内容:参数变量存储在内存中的位置?
全局变量 - >存储在静态
静态varables的代码段 - >
局部自动变量(inside方法) - >存储在堆栈
本地上静态变量 - >存储在堆栈中
局部常量变量 - >存储在堆栈中
假设我的假设是正确的。
但是参数变量存储在哪里?例如:int *(int x,char * c);
谢谢!
编辑: 我知道,当我malloc的东西,它被放置在堆上,但是说我取消引用指针来获得在指针位置值,是也存储在堆或者是现在在堆栈中?
回答您的编辑:值仍然存储在堆上。当你取消引用一个指针时,你触发一个存储器读取访问存储在你的指针中的任何地址(无论是堆栈,堆等)。根据编译器生成的机器码,读取值可能会临时放置到CPU寄存器中以进行高效的进一步处理。 – 2013-04-30 16:59:02