通常数据段在C code位于RAM易失性存储器,由初始化数据段组成,未初始化数据段(.BSS), 堆栈内存和堆。
堆栈内存仅在运行时调用例程和在push and pull的价值观。
堆用于动态内存分配调用malloc
, calloc
and realloc
.
.BSS段仅对 memset 或内部函数有价值,因为它没有任何真正的初始值。
But the 初始化数据段即使它是静态的或全局的,也必须具有一些值,并且这些值需要存储在非易失性内存位置中,因为它应该在代码运行之前存在。
问题:该初始化值存储在非易失性内存位置的哪一部分中?我们是否可以使用任何方法来减少其内存消耗?
下面两张图有助于理解c二进制的内存布局
Refer : C 编译器。内存映射。程序 https://www.ele.uva.es/%7Ejesus/hardware_empotrado/Compiler.pdf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)