实测:
下图是加了这段测试代码后的free情况:
下图是屏蔽这段测试代码后的free情况:
两者相比,我以为只少了1K的堆空间,实际free显示足足少了差不多4K!
疑惑,请教下各位。
感激
.
前后两次代码的区别,只是多定义了一个4K的数组而已。前后两次代码跑到相同的位置。 但是最大的历史申请内存高水位线,maximum allocated memory值,却不一样,而且相差有点大,差不多近3K了。
首先纠正一个小问题:
这个test1字段应该是在BSS段,而不是在DATA段;
他们都是全局数据区,但是区别在于BSS段一般存放的是未初始化或初始化为0的全局变量/数组,而DATA段存放的是初始化为非0的全局变量/数组。
关于你的疑问的内存分布的问题,你可以看下map文件。
以qemu-vexpress-a9为例做分析:
可以看到HEAP_START和HEAP_END,而HEAP_START恰好就是__bss_end。
注意这里的都是还未考虑地址对齐的情况,对齐的是在init那里处理;
把以上这些地址值打出来观察,或者可以解决你的疑惑。
哈哈 感谢 。 麻痹大意了!
可以进一步请教下,为什么前后两次maximum allocated memory的值相差3K呢?而USED MEMORY的值,在前后两次都几乎一样。