在运行之前,初始化数据段的值将存储在哪里?

时间:2018-12-27 08:56:50

标签: c memory memory-management

通常, C代码中的数据段位于 RAM 易失性存储器中,并由初始化数据段,未初始化数据段(.BSS)堆栈内存和堆。

  1. 堆栈内存仅在运行时调用例程中显示,并且以 push pull 值显示。

  2. 堆用于动态内存分配调用malloccallocrealloc

  3. .BSS段仅通过内存集或内部函数具有值,因为它没有任何真正的初始值。

  4. 但是已初始化的数据段,即使它是静态的或全局的,也必须具有一些值,并且这些值必须存储在非易失性存储单元中,因为它应该在运行前就存在代码。

问题: 初始化值存储在非易失性存储器位置的哪个部分中,以及是否有任何方法可以用来减少此值的存储器消耗?

1 个答案:

答案 0 :(得分:1)

以下两个图有助于了解c二进制文件的内存布局

enter image description here enter image description here

引用:C compiler. Memory map. Program