【发布时间】:2021-10-23 09:41:20
【问题描述】:
我的理解是,堆栈、虚拟表、静态变量等静态内存都是在“编译时”分配的,而不是在运行时分配的动态内存。但我对这意味着什么感到困惑。据我了解,编译器/链接器解释编写的代码,将其翻译成机器语言,然后将其组装成可执行文件。是否暗示堆栈和所有静态内存都是可执行文件本身的一部分?
【问题讨论】:
-
嗯,首先,堆栈并不是真正的静态内存。它通常被实现为在加载时分配给程序的内存区域。其他内容(如全局静态变量)可能由链接器编码到可执行文件中,但这不是必需的。
标签: c++ stack compile-time static-memory-allocation