new/ delete和malloc/有free什么区别?
相关(重复?):在什么情况下我使用malloc vs new?
就各自的语言标准而言,C仅通过malloc()族提供动态内存分配,而在C++中,最常见的分配形式是由::operator new().C风格的malloc也有C++版本,许多"baby的第一个分配器"示例使用它作为其核心分配函数,但我很好奇当代编译器如何实现实际的生产操作符 - new.
它只是一个薄的包装器malloc(),或者由于与典型的C程序相比,典型的C++程序的内存分配行为有很大不同,它是否会根本不同地实现?
[ 编辑:我认为主要区别通常描述如下:AC程序具有更少,更大,更长寿的分配,而C++程序具有许多小的短期分配.如果错误的话,请随意加入,但听起来有人会考虑到这一点.
对于像GCC这样的编译器,只需要一个单独的核心分配实现并将其用于所有相关语言就很容易,因此我想知道在每种语言中尝试优化分配性能的细节是否存在差异.
更新:感谢所有的好答案!看起来在GCC中这完全由ptmalloc解决,而且MSVC也在malloc核心使用.有谁知道MSVC-malloc是如何实现的?