如何在 C++ 中realloc
?语言中似乎缺少它 - 有 new
和 delete
但没有 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/