前几天在论坛上看到关于new,malloc和HeapAlloc的帖子,一路看下来,都觉得讲的不够清楚,于是上google乱搜了一通,结果还真是有些收获!这其中最重要的收获是jjhou的一篇《池内春秋-Memory Pool 的设计哲学与无痛运用》。以这篇文章为起点,笔者开始了new,malloc的探险。
写了一个简单的程序,有new和malloc就可以。用VC编译为DEBUG版本,然后单步运行,进入new,和malloc内部,找到了在NEW.CPP, MALLOC.C和DBGHEAP.C三个个文件,在这三个文件中搜索一番,new, mallc, HeapAlloc的关系终于弄清楚了! 那就是 new->malloc->HeapAlloc,就是说new调用malloc, malloc调用HeapAlloc。
回头再看jjhou的文章时,发现自己错了,C++Builder的malloc是不调用HeapAlloc的,C++Builder只是调用VirtualAlloc然后自己进行管理。那么C++Builder中的new是否调用malloc呢,也许是,也许否,等以后有时间再仔细研究吧。
最后推荐大家看看jjhou的这篇文章《池内春秋-Memory Pool 的设计哲学与无痛运用》http://jjhou.youkuaiyun.com/programmer-13-memory-pool.htm
VC++中new,malloc,与HeapAlloc
最新推荐文章于 2024-12-30 09:10:23 发布
本文通过实践探索了new、malloc及HeapAlloc之间的调用关系,并指出C++Builder中的malloc并非调用HeapAlloc,而是使用VirtualAlloc进行内存管理。文章还提到了C++Builder中的new可能调用malloc的情况。
1万+

被折叠的 条评论
为什么被折叠?



