c++ - 你如何在 C++ 中使用 'realloc'?

标签 c++ new-operator realloc delete-operator

如何在 C++ 中realloc?语言中似乎缺少它 - 有 newdelete 但没有 resize!

我需要它,因为当我的程序读取更多数据时,我需要重新分配缓冲区来保存它。我不认为 delete 旧指针和 new 新的更大的指针是正确的选择。

最佳答案

使用::std::vector!

Type* t = (Type*)malloc(sizeof(Type)*n) 
memset(t, 0, sizeof(Type)*m)

变成

::std::vector<Type> t(n, 0);

然后

t = (Type*)realloc(t, sizeof(Type) * n2);

变成

t.resize(n2);

如果你想将指针传递给函数,而不是

Foo(t)

使用

Foo(&t[0])

这是绝对正确的 C++ 代码,因为 vector 是一个智能 C 数组。

关于c++ - 你如何在 C++ 中使用 'realloc'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482941/

相关文章:

c++ - 聚合初始化不支持构造函数访问

c++ - 为什么标准允许我在没有析构函数的情况下自由存储分配类?

c++ - C++14 是否要求删除表达式必须调用 `void operator::delete(void*, std::size_t)` 而不是 `void::operator delete(void*)` ?

c++ - 是否可以从新的 int[] 中一次删除一项

c - C 中增长内存中的多维数组

c - 在先前 malloc ed 指针上使用 realloc 会导致段错误

c++ - 既然 delete [] 知道数组大小,为什么这个信息不可用?

c++ - GLM::Rotate 似乎导致错误的旋转?

c# - 继承和new关键字

c - 应该使用 realloc 吗?