我怎样才能在C中重新分配?它似乎从语言中缺失 – 有新的和删除但没有调整大小!
我需要它,因为当我的程序读取更多数据时,我需要重新分配缓冲区来保存它.我不认为删除旧指针和新的更大的指针是正确的选择.
解决方法:
使用:: 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阵列.