c - 关于进程内存中的变量

标签 c memory-management

在下面的代码中:

int main()
{
     int i;
     char* s = "Hello";
     i = 10;
}

在内存中:

  • 10 应该入栈

  • "hello" 的地址应该入栈

  • “你好”应该存储在只读内存中

在进程内存中,is在哪里。他们住在哪里?

最佳答案

变量名只是为了方便程序员,方便他引用。值本身存储在编译器认为适合放置它们的任何位置,但名称被丢弃。 如果优化器决定某个变量具有足够小的范围并且有足够的寄存器可用,那么您称为 i 的变量甚至可能在进程内存中没有存储位置,因为它可以也保存在寄存器中。

所以这主要取决于编译器的决定,即某个变量的位置。静态和全局变量总是在进程内存中,但局部变量可能不在堆栈中。

关于c - 关于进程内存中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033954/

相关文章:

C++ - 使用 std::vector 和相关内存管理的正确方法

javascript - 如何正确取消引用然后删除 JavaScript 对象?

c - 为什么函数式编程优于 C

c - C/C++中的仿真算法实现

c# - 最重要的设置位剩下的未设置位的数量?

iphone - 分配的对象的潜在泄漏 - UIViewController

c - 在这个程序中数组是如何存储在内存中的?

c++ - 真的不需要学习C,因为C++包罗万象吗?

c++ - 从命令行读取文件作为输入

java - 为什么 netbeans java profiler 在 ~64mb 处崩溃并出现堆溢出错误?