Ima*_*ist 4 c c++ arrays memory-management
我的问题具体是关于数组,而不是对象.
上有几个问题对SO malloc()/ free()与new/ delete,但他们都专注于如何使用它们的差异.我理解它们是如何使用的,但我不明白底层差异会导致使用上的差异.
我经常听到C程序员说malloc()并且free()操作成本很高,但我从来没有听说过C++程序员这样说new和delete.我还注意到C++没有与C相对应的操作realloc().
如果我正在写一个相当于C++的vector类,我想,以避免调整它的时候,但复制整个数组new和delete你必须复制.在C中,我会简单地说realloc().值得注意的是,realloc()可能只是复制整个数组,但我的印象是它使用相同的指针并为其分配更少的空间,至少在调整大小时.
所以我的问题是,如何通过使用的算法malloc(),并free()从那些使用不同的new和delete.更具体地说,为什么C方式有一个更昂贵的耻辱,为什么C++方式不允许在不复制的情况下调整大小?
引擎盖下没有真正的区别 - 通常默认情况下new,delete操作员只需通过malloc和调用free.
至于"更加昂贵的耻辱",我的理论是这样的:在当天,每个周期都计算在内,并且malloc在许多情况下所花费的时间确实很重要.但到了C++出现的时候,硬件速度要快得多,而免费商店经理花费的时间也不那么重要了.重点是从有效使用机器资源转向有效使用程序员资源.
为什么C++缺乏realloc等价物,我不知道.