在下面的代码中:
int main()
{
int i;
char* s = "Hello";
i = 10;
}
在内存中:
10
应该入栈"hello"
的地址应该入栈“你好”
应该存储在只读内存中
在进程内存中,i
和s
在哪里。他们住在哪里?
最佳答案
变量名只是为了方便程序员,方便他引用。值本身存储在编译器认为适合放置它们的任何位置,但名称被丢弃。
如果优化器决定某个变量具有足够小的范围并且有足够的寄存器可用,那么您称为 i
的变量甚至可能在进程内存中没有存储位置,因为它可以也保存在寄存器中。
所以这主要取决于编译器的决定,即某个变量的位置。静态和全局变量总是在进程内存中,但局部变量可能不在堆栈中。
关于c - 关于进程内存中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033954/