在C++中,全局变量的内存分配发生在程序启动时,当C++运行时环境初始化并加载可执行文件时。全局变量存储在程序的数据段(data segment)中,这是进程的只读内存区域。数据段用于存储已初始化的全局变量和静态变量。
在程序的生命周期中,全局变量的内存分配是一次性的。这意味着它们在程序启动时被分配内存,并在程序结束时由操作系统回收。
需要注意的是,局部变量并不存储在数据段中,而是存储在栈(stack)上。栈内存的分配和回收速度较快,因为它遵循后进先出(LIFO)原则。然而,栈内存的空间有限,因此在程序中使用过多的局部变量可能会导致栈溢出。