こんにちは
配列を使った際、うまいことDeleteが働いてくれないため
メモリが開放されずに困っています、
初歩的な質問で申し訳ありませんが、質問させて下さい。
下記のプログラムでは、
単純にメモリ確保とメモリ開放を行っていると思うのですが…
注釈にもあるように、Deleteでメモリが開放されません。
#include <iostream>
using namespace std;
class Base
{
};
class Sub : public Base
{
char size[256];//領域確保用
};
void main()
{
Base* obj[10000];
for(int cnt=0;cnt<10000;cnt++)
{
obj[cnt] = new Sub;
}
for(int cnt=0;cnt<10000;cnt++)
{
delete obj[cnt];//メモリが開放されない
}
}
ポインタが怪しいと思うのですが、
どうにかうまいことメモリを開放することは出来ないでしょうか。
よろしければ返答お願いいたします。
No.1ベストアンサー
- 回答日時:
正しくdeleteするためには,deleteされるオブジェクトの静的な型 (今回ではBase) にvirtualの付いたデストラクタがないといけません。
そうでない場合,deleteされるオブジェクトの静的な型とnewした型 (今回ではSub) が異なる場合は未定義動作とされています。
なるほど、調べてみれば、スーパークラスのデストラクタには
Virtualを付けておいた方が良いようですね。
そうしないとスーパークラスのデストラクタだけが実行されるようですね…。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
newしないオブジェクトについて
-
allocってなんですか?
-
mallocについて
-
C++のnewで確保したメモリーの...
-
Accessで、メモリを開放するタ...
-
LPWSTRのコピー
-
ポインタのポインタの初期化法
-
プログラムが途中で強制終了し...
-
DLLのマルチスレッドの動作につ...
-
LPTSTR型の変数に文字を格納
-
グローバル変数のサイズ
-
malloc関数(strtok関数の自作版...
-
mallocで確保するメモリの領域...
-
ヒープメモリの解放について
-
実行ファイルのメモリ上のアド...
-
malloc()関数内でセングメント...
-
free関数で動作が止まる
-
文字列ポインタとgets関数の関...
-
スタック破壊の上手な見つけ方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mallocについて
-
c言語のポインタへの文字列入力...
-
allocってなんですか?
-
newしないオブジェクトについて
-
ヒープメモリの解放について
-
C++で、メンバもヒープに確保さ...
-
MSDNがgethostbynameではなくge...
-
プログラムが途中で強制終了し...
-
配列の添え字の最大数とは?
-
Accessで、メモリを開放するタ...
-
ヒープ領域の限界値設定
-
malloc呼び出し時のセグメンテ...
-
スタック破壊の上手な見つけ方...
-
C言語 mallocとfreeについて
-
指定したメモリアドレスの値の...
-
stringの最大サイズ
-
16進ダンプのプログラム
-
64ビットと32ビットの違い
-
入れ子になった構造体について
-
free関数で動作が止まる
おすすめ情報