JW *_*W O 0 c c++ memory hardware compilation
我对计算机了解不多,所以我的问题很幼稚。
我了解到,C 代码的编译在编译过程中会在主内存中的堆栈中保留特定的内存空间。
然后,
为什么在一台计算机上编译并复制到另一台计算机上的可执行文件可以工作?
如果编译保留 RAM 的特定内存位置,那么可执行文件(或编译)的数量是否受 RAM 大小的限制?
如果编译在 RAM 中保留空间,为什么可执行文件比预编译的 .C 文本文件占用更多的磁盘空间?
谢谢
堆栈在编译时不被编译器保留。从某种意义上说,它是保留的,即编译器将特定的命令和指令插入到可执行文件中,以便在加载/运行可执行文件时保留堆栈
不,见上文。RAM 在编译时未保留(其他可执行文件不可用)。当加载/执行可执行文件时它被保留。
这不一定是真的。在许多情况下,可执行文件比代码小。但它可能取决于许多因素,例如代码的编写方式、可执行格式、其中包含的元数据以及内存布局。有时,可执行文件将包含整个零填充部分,可以通过代码中的一行来定义。
一般来说,编译器(与链接器结合使用,如果我们想学究气的话)只有一项“简单”工作 - 获取输入文件(代码)并生成输出文件 - 可执行文件。也就是说,它正在创建仅占用文件系统中的空间的文件。只有当环境(操作系统)加载它们并使用它们执行某些操作(加载、执行)时,其他事情才会发生。
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |