一个exe文件的大小 ,会影响其运行时所占的内存吗?

发布于 2022-09-13 00:59:42 字数 130 浏览 19 评论 0

看书上说可执行程序有 .bss .data .text 区,记录着全局变量和代码指令、那么如果一个程序足够复杂,全局变量和代码指令非常多,编译出的exe非常大,那是不是意味着程序初始化时需要更多的内存?
至少需要比exe文件大小更多的内存?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

陌上青苔 2022-09-20 00:59:42

这涉及程序加载的具体过程,程序加载时候将elf和内存虚拟空间做了一个映射,此时并没有将整个elf都加载进去,当程序运行过程中需要用到没加载的部分时候会发生缺页错误,此时操作系统才去磁盘加载缺失的部分

醉态萌生 2022-09-20 00:59:42

直接说结论:运行文件所需内存大小和文件本身占用磁盘的大小并没有直接的关系。
这种问题自己直接写个程序验证一下就知道了。

可可 2022-09-20 00:59:42

你说的在一定程度上是对的,exe越大程序所占用的静态空间就越大。但程序在运行的过程中除了静态空间,还会分配动态的空间,而且动态空间有时候比静态空间还要大,程序的内存占用=静态空间+动态空间,所以很多时候exe文件的大小不是内存占用决定性的因素。

怂人 2022-09-20 00:59:42

答案是:会影响,但是就像前面一位答主说了,通常不是程序运行时占用内存的决定性因素。

可执行文件运行是会被加载进内存,这时大的可执行文件就会比小的可执行文件占用更多的内存。当程序开始运行起来后可能会申请动态内存,或者使用很大的栈内存,这些内存的使用量和exe本身大小没关系,只和程序的内在逻辑有关。

有些特殊程序,比如比较大的自解压的exe,运行时用的动态空间应该是远远小于静态空间的,这种exe确实是程序越大占用内存越多的。

蓝礼 2022-09-20 00:59:42

1个人的饭量不取决于现有的体重

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文