【发布时间】:2020-04-04 14:05:52
【问题描述】:
如果我用 static.lib 静态编译一个可执行的 prog.exe 当 prog.exe 运行时,它会加载 prog.exe 的所有二进制文件,包括 static.lib 吗?
第一次加载 prog.exe 时,对于静态和全局变量,是否使用 RAM 上的内存?
地址的内存分配发生在编译时和运行时,这些内存地址被占用了吗?
相同的虚拟地址是否映射到不同的物理内存地址?
听说不经常访问的变量不会出现在RAM而是硬盘,这个不经常访问变量的信息是怎么存储的,是不是存储在prog.exe中var1不经常访问应该存储在硬盘中?
需要的时候从硬盘加载?
【问题讨论】:
-
取决于可执行格式。对于 ELF,请参阅 lwn.net/Articles/631631
-
它与编程语言无关,取决于操作系统。但一般来说,单独的变量不存在,如果不经常使用也不会放在磁盘上。如果内存不足且未使用,内存块可能会被分页,但这是另一回事,与变量无关。
标签: c++