我的问题具体是关于数组,而不是对象。在C和C++中如何分配和释放* array *内存?
上有大约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++方式不允许在不复制的情况下调整大小?
realloc的是相当时髦,这取决于实际的参数和当前存储器使用它将ALLOC,删除,就地或realloc并移动(并因此无效其它指针)的realloc。即你不能从代码中看到它会做什么。 – 2009-08-20 08:27:35