Eng*_*iel 1 c++ memory allocation
我理解C++程序的内存分配过程.根据我从互联网上获得的内容,对于C++编译器,在编译时为内核分配全局变量和静态变量.虽然动态创建的变量(例如new/malloc操作)仅在可执行文件实际运行时才会在内存中获得空间.如果我在这里错了,请纠正我.
因此,如果永远不会执行可执行文件,那么先前在编译时为全局和静态变量分配的内存部分仍将一直位于内存中,直到计算机关闭为止?如果我们关闭PC并重新启动它然后重新执行可执行文件怎么办?这次,没有编译过程,操作系统何时为该程序的全局和静态变量分配内存?它是在系统启动阶段,还是在可执行文件实际执行时?
现在将此问题扩展到PC中的任何常规程序.例如Microsoft Word程序.我们没有自己编写和编译它,我们只是从它的安装包安装它,因此在这种情况下没有编译过程(或者安装过程实际上是编译过程).假设这些通用程序在内存中还需要空间用于静态和全局变量,操作系统何时为这些程序分配内存?是在我们启动并启动操作系统时,还是在我们实际执行这些程序的可执行文件时?如果操作系统在引导时预先加载所有这些静态变量,那么这就解释了为什么操作系统启动过程需要一些时间,但如果系统中安装的90%的程序不是,那么这似乎是浪费内存资源每次用户启动并使用他的PC时执行.