众所周知,new
(/ delete
)和malloc
(/ free
)不会混在一起。
是什么原因导致它们无法兼容?
我理解new
和delete
有两个职责:除了分配和解除分配之外还要构建和销毁,以便使问题更准确:为什么不是::operator new
和{{} {1}}分别拨打::operator delete
和::malloc
所需的功能?
强制兼容性至少允许::free
原始(或可重新定位的非原始)类型的realloc
数组,这些类型可以带来非显着的性能优势,并且它会使事情变得更简单。绝对想要new
free
内存(当不需要破坏时)。
那么在这里打破与new
的兼容性的原因是什么?