新内存和重新分配内存

new and reallocating memory

本文关键字:内存 分配 新分配 新内存      更新时间:2023-10-16

new[]不支持更改分配的内存大小,是吗?

例如,我用new[]为缓冲区(char数组)分配了内存,我想获得额外的内存。

在这种情况下,我应该使用malloc/realloc吗?

new不支持此功能。

可以使用newdeletememcpy手动模拟realloc的行为。

顺便说一下,您应该始终使用相同的方法系列,即malloc/realloc/freenew/delete,而不是将reallocnew/delete混合使用。例如,请参阅Purify报告的FMM错误。

在不使用C保留mallocrealloc的情况下,在标准C++中最接近的方法是使用std::vector<char>。它可以随时调整大小,如果底层存储被重新分配,内容将被自动复制。

使用std::vector。你不必处理这些问题。

将malloc/realloc与new一起使用不是一个好主意。

new在应用后将不支持重新分配更多内存。

因此,一个好主意是创建一个具有额外内存的新缓冲区memcpy并删除旧缓冲区。然后指向这个新的缓冲区。

您应该使用std::vector。它可以调整大小。