
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#
-
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
char*を初期化したいのですが
C言語・C++・C#
-
-
4
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
5
C++のnewで確保したメモリーの解放の確認方法
C言語・C++・C#
-
6
クラスのインスタンス名をクラス内で取得できますか?
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
error C3867 関数呼び出しには引数リスト
C言語・C++・C#
-
9
既定のコンストラクタがない?
C言語・C++・C#
-
10
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
11
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
12
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
13
visual studio2019でデバッグができません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Replace関数について教えて...
-
CSSが全く分かりません、お助け...
-
プログラミング 素数か素数では...
-
c言語の問題の説明、各所ごとに
-
DLLファイルの逆コンパイラにつ...
-
逆コンパイルと逆アセンブルの...
-
C言語について。
-
C#でログファイルにファイルパ...
-
終端記号、非終端記号とは
-
VisualStudioでC++クラスを追加...
-
int16_t の _t は何?
-
Cのオブジェクトファイルの逆ア...
-
C言語の関数のextern宣言
-
DNCL(共テ用プログラミング言語...
-
C#でTreeViewのCheckBoxのサイ...
-
CPUが16bitでも32bitOSでコンパ...
-
C言語 列挙型(enum型)変数について
-
コマンドプロンプトについて。
-
visual studioでフォームデザイ...
-
Windows Formアプリからコンソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列のオフセットおよび長さが...
-
VB6.0 パスが見つかりません
-
deleteで開放するとエラーにな...
-
<strong>は、重要・緊急・注意...
-
Access VBA での有効なパスチェ...
-
M365環境での動作エラー、及び...
-
エクセルのような表計算ソフトO...
-
スクリプトで通知領域にあるソ...
-
エラー:ページにアクセスする...
-
Excel vbaでフォルダー内のppt...
-
ITRONプログラミングについて
-
pythonのモジュールのエラーの原因
-
TRACKER : error TRK0002:
-
VBA で警告音
-
ExcelVBAマクロでの変数の宣言...
-
c#で他のアプリをアクティブに...
-
Androidアプリ開発をしようとし...
-
VBA Selenium Google Chrome 操...
-
外付けハードディスク2台をミ...
-
学校のChrome Bookのロックの解...
おすすめ情報