[解決済み] std::vector オブジェクトの「正しい」割り当て解除方法
2022-02-24 18:50:45
質問
最初の解答は
std::vector<int> *vec = new std::vector<int>;
assert(vec != NULL);
// ...
delete vec;
An 代替 があります。
std::vector<int> v;
//...
vec.clear();
vec.swap(std::vector<int>(vec));
2つ目の解決策はちょっとしたトリックで、「正しい方法」とは何でしょうか?
更新してください。
デストラクタがスタックから外れた時点で呼ばれることは承知しています、他の方法が気になりました。
どのように解決するのですか?
ベクターの割り当てを解除する最も簡単で確実な方法は、スタック上で宣言し、単に何もしないことです。
void Foo() {
std::vector<int> v;
...
}
のデストラクタは、C++で保証されています。
v
はメソッドの実行時に呼び出されます。 のデストラクタは
std::vector
は、それが割り当てたすべてのメモリが解放されるようにします。 このため
T
の型は
vector<T>
が適切な C++ のデアロケーション・セマンティクスを持っていれば、すべてがうまくいくでしょう。
関連
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] C++でintをstringに変換する最も簡単な方法
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
-
[解決済み] std::vectorをハードコードされた要素で初期化する最も簡単な方法は何ですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
-
[解決済み] std::vector に対する反復処理: 符号なしインデックス変数と符号ありインデックス変数の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み] C++ delete vector, object, free memory