不同的来源对我说不同的东西——一些 StackOverflow 的答案说它是在编译时分配的——其他人说它是在编译时“定义”的,并在运行时开始分配(“加载时间”是一些人所说的) ,而其他人说它是在编译时分配的。何时在 C/C++ 中准确分配静态内存? (如果它与“定义”变量有关 - 有人可以告诉我在内存级别“定义”变量意味着什么 - 将不胜感激!)
此外,您将如何在运行时设置指向已分配静态内存开始的指针?
最佳答案
在典型的工具中,具有静态存储持续时间的内存被安排在多个步骤中:
foo
的符号”。应该设置到他们的地址。” bar
位于从节开始的偏移量 124 处,baz
在偏移量 900...” 总而言之,静态内存不会在任何特定时间分配。它是许多事件的组合。对程序的影响主要是它的发生与程序启动时全部分配一样,但物理内存可能仅在指令实际执行之前分配。 (物理内存甚至可以从进程中取出并在以后恢复。)
关于c++ - 什么时候在 C/C++ 中分配静态内存?在编译时还是在程序运行的最开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64613413/