在C ++中替代realloc?

问题描述

在C语言中,我们可以简单地使用realloc()来增加/减小指针指向的内存大小。

在使用“ new”最初分配内存的情况下,C ++中是否存在等效的重新分配运算符/函数

解决方法

不,没有renew呼叫:-)

而且,老实说,有了C ++提供的所有丰富(和自动调整大小)的数据结构,几乎不需要它。例如,虽然可能需要调整C字符串的大小以添加更多文本,但是std::string会为您照顾好它。 std::vector也适用于其他数组,依此类推。

如果您真的想与C ++的最后二十年背道而驰,那么您始终可以还原至C语言(因为{{1} },mallocfree可用),但如果可以避免的话,我建议不要这样做。

您也可以尝试实现realloc功能,但是由于您将无法访问内部存储器分配数据(就像renew一样),因此它将变得更加困难。这意味着每个 realloc可能将成为“分配和复制”操作。

而且,如果您提供的类可以提供您的信息,那么您已经进入了“比字节数组稍微复杂一点”的领域,因此可能会加紧努力让类本身会进行繁重的重新分配。


顺便说一句,我从来没有真正喜欢过renew,因为如果失败,您通常会在内存泄漏中丢失旧指针。这意味着我一直必须做类似的事情:

realloc