malloc探索小步

看《程序员的自我修养》这本书(P307),知道malloc是先从堆(默认1MB)申请空间,不够再调用mmap()申请虚拟空间。

但在做PAT DS 3-05时,出现超出预期的空间申请量。

最后去测试malloc,我连续malloc(1)并输出空间起始地址,发现相邻的空间,地址仍然相差32字节。测试了maloc(12),malloc(16)和malloc(24),得到的相邻地址值仍然相差32字节。

我的是64位机,用的ubuntu12.04(kernel 3.5) + gcc 4.6.3。

估计32位机malloc的地址对齐是16字节

注意填充部分也算在程序消耗内存里的。

windows下没有测试。


之后一直在想为何64位机malloc最少申请32字节空间。想起了堆分配算法或许用的位图或对象池,一次分配固定大小,会产生这样的碎片。


补充:在64位的freebsd上却不是这样,看来malloc的实现细节是不一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值