
deleteでメモリ開放するとエラーになる原因がわからないです。
下記のようなプログラムを作ったのですが、deleteのところでエラーがでます。
エラー内容は
「Windows によって ****.exe でブレークポイントが発生しました。
ヒープが壊れていることが原因として考えられます。****.exe または読み込まれた DLL にバグがあります。
あるいは、****.exe がフォーカスを持っているときに、ユーザーが F12 キーを押したことが原因として考えられます。
可能であれば、出力ウィンドウに詳細な診断情報が表示されます。」
とでます。
ソースは
wchar_t *aaa = L"ほげほげ";
wchar_t bbb[200];
wcscpy(bbb, aaa);
delete aaa;
wprintf(L"%s\n", bbb);
getchar();
です。
どこに原因があるのでしょうか?
[環境]
WindowsXP+VisualC++2008 UNICODE使用
No.5ベストアンサー
- 回答日時:
メモリを動的に取ったした時は、決まったやり方で解放します。
メモリを確保するにはC++では「new」、C言語では「new」が一般的です。
「new」で取ったメモリは「delete」で解放する、「malloc」は「free」を使う、というのも決まりです。(「new」で取ったメモリを「free」で解放するとエラーになります。「malloc」も同じ)
サンプルのコードでは、「new」で取っていないメモリ領域に対して「delete」をかけてしまっているのがエラーの原因です。
コンパイルを通すだけなら「delete」の部分を削除すればよいかと思います。
「new」と「delete」はC++をやる限り理解しなければならない命令文です。ここの理解がいい加減だと、C++では地獄を見ます。
できれば「C++ new delete」で検索をかけて、詳細を調べることをお勧めします。
No.4
- 回答日時:
>文字列定数をdeleteで解放
文字定数に限らず、newしていない領域に対して
deleteしてはいけません。
この2つはセットだと思ってください。
>どこに原因があるのでしょうか?
delete aaa;←ここ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
char*を初期化したいのですが
C言語・C++・C#
-
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
-
4
C++のnewで確保したメモリーの解放の確認方法
C言語・C++・C#
-
5
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
6
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
7
既定のコンストラクタがない?
C言語・C++・C#
-
8
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
9
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
10
クラスのインスタンス名をクラス内で取得できますか?
C言語・C++・C#
-
11
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
12
error C3867 関数呼び出しには引数リスト
C言語・C++・C#
-
13
visual studio2019でデバッグができません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー:ページにアクセスする...
-
deleteで開放するとエラーにな...
-
M365環境での動作エラー、及び...
-
VB6.0 パスが見つかりません
-
外付けハードディスク2台をミ...
-
Thunderbird ローカルフォルダ...
-
学校のChrome Bookのロックの解...
-
ARCServerでバックアップ異常
-
換装したSSDのバックアップ
-
特定のsteamゲームが起動前にク...
-
ブルースクリーンが出て・・・
-
仕事で使っているPCが壊れた時...
-
桜時計が起動しない
-
BackupExecでのテープクリーニング
-
joyToKeyが起動しない
-
VMWAREの仮想マシンをコピーし...
-
ARCserve Backup11で自動クリー...
-
ハードディスク(パソコン)破...
-
windows2000のシステムイメージ...
-
ASRockのLED制御が出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
deleteで開放するとエラーにな...
-
配列のオフセットおよび長さが...
-
Excel vbaでフォルダー内のppt...
-
VBA Selenium Google Chrome 操...
-
VB6.0 パスが見つかりません
-
Access VBA での有効なパスチェ...
-
スクリプトで通知領域にあるソ...
-
TRACKER : error TRK0002:
-
エラー:ページにアクセスする...
-
<strong>は、重要・緊急・注意...
-
VBA で警告音
-
pythonのモジュールのエラーの原因
-
ITRONプログラミングについて
-
VC++6.0 警告抑制
-
Dreamweaverでテンプレートが作...
-
c#で他のアプリをアクティブに...
-
エクセルのような表計算ソフトO...
-
外付けハードディスク2台をミ...
-
換装したSSDのバックアップ
-
学校のChrome Bookのロックの解...
おすすめ情報