VC++中new,malloc,与HeapAlloc

前几天在论坛上看到关于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.csdn.net/programmer-13-memory-pool.htm
 

你可能感兴趣的:(VC++中new,malloc,与HeapAlloc)