
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#
-
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
-
4
画面を強制的に再描画させる方法
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
既定のコンストラクタがない?
C言語・C++・C#
-
7
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
8
new charとnew char[N]の違いは?
C言語・C++・C#
-
9
C++のnewで確保したメモリーの解放の確認方法
C言語・C++・C#
-
10
アプリケーション終了時例外エラー(アクセス違反)の調査方法について
C言語・C++・C#
-
11
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
12
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
13
WaitForSingleObjectの使い方について
C言語・C++・C#
-
14
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
15
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
16
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
17
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
18
戻り値で構造体を返すことは可能でしょうか?
C言語・C++・C#
-
19
MFCでコンボボックスを選択不可状態にしたい
C言語・C++・C#
-
20
std::stringからLPCWSTR型への変換
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
int16_t の _t は何?
-
gccを行ってもexeファイルが生...
-
DLLファイルの逆コンパイラにつ...
-
C++でデスクトップGUIアプリ開...
-
C言語 バッファについて。
-
VisualStudioでC++クラスを追加...
-
C#でTreeViewのCheckBoxのサイ...
-
ArduinoのジャイロモジュールMP...
-
VisualStudio2022でC言語プログ...
-
C# で 数式文字列処理を処理す...
-
C言語のことです。写真(見にく...
-
c++の勉強方法を教えてくださ...
-
逆コンパイルと逆アセンブルの...
-
パソコン
-
あんまり考えたくないけど
-
swift言語の最適化 swift最適化...
-
終端記号、非終端記号とは
-
C言語について。
-
C言語関数違いについて。
-
ディスプレイの解像度とマウス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
deleteで開放するとエラーにな...
-
配列のオフセットおよび長さが...
-
VB6.0 パスが見つかりません
-
エラー:ページにアクセスする...
-
VBA で警告音
-
pythonのモジュールのエラーの原因
-
Excel vbaでフォルダー内のppt...
-
スクリプトで通知領域にあるソ...
-
IEの操作(Busy)でエラーになる
-
Androidアプリ開発をしようとし...
-
メモリの解放
-
TRACKER : error TRK0002:
-
QVTKWidget.hの入手方法を教えて
-
エクセルのような表計算ソフトO...
-
VBからExcelが起動しません
-
Dreamweaverでテンプレートが作...
-
VBA Selenium Google Chrome 操...
-
外付けハードディスク2台をミ...
-
学校のChrome Bookのロックの解...
-
STEAM版BF4が起動しない
おすすめ情報