1. ホーム
  2. c++

[解決済み] C++で'realloc'はどうやるの?

2023-04-01 08:47:37

質問

どうすれば 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])

vectorは賢いC-arrayなので、これは全く正しいC++のコードです。