【发布时间】:2013-04-24 15:46:43
【问题描述】:
我正在用 C 编写一些代码,当遇到一个方法时,我想知道参数变量存储在内存中的什么位置。 我知道以下几点:
全局变量 -> 存储在静态代码部分
静态变量 ->
本地自动变量(内部方法)-> 存储在堆栈中
局部静态变量 -> 存储在堆栈中
局部常量变量 -> 存储在堆栈中
假设我的假设是正确的。
但是参数变量存储在哪里?例如: int *(int x, char *c);
谢谢!
编辑: 我知道当我 malloc 某些东西时,它被放在堆上,但是说我取消引用指针以获取指针位置处的值,是也存储在堆中还是现在在堆栈中?
【问题讨论】:
-
回答您的编辑:该值仍存储在堆中。当您取消引用指针时,您会触发对存储在指针中的任何地址(无论是堆栈、堆等)的内存读取访问。根据编译器生成的机器代码,读取的值可能会临时放入 CPU 寄存器中,以便进行有效的进一步处理。