关于C++堆空间分配问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:58:23
大家都知道,new可以在堆中分配一块空间,但是频繁的空间分配又会造成堆中有很多碎片,造成的一种情况是我想分配一块大的空间,但提示不够,原因是没有一块连续的空间能够满足,但可能零碎的空间加起来远远大于我想要的空间,请问有什么办法能防止这种情况出现或者把零碎的空间拼凑起来,谢谢!!

通常碎片没你想像中多。
new一次会向操作系统申请一定数量的空间,可能是一页的大小(4K),
同时维护这部分内存的使用情况。
然后下次再new的时候会检查这部分维护着的内存,看空余的空间是否足够返回给用户,如果足够就直接返回,如果不够就再向系统申请内存,然后再返回给用户。

真的遇到这种机制不能满足的情况,可以自己写一个内存池来解决。

要 delete