※ ChatGPTを利用し、要約された質問です(原文:C++のメモリアクセス?のエラー)
C++のメモリアクセスエラーの解決方法
このQ&Aのポイント
C++でint型の配列を0で初期化する方法について質問します。
コンストラクタ内でpush_counter[20] = {}と書いたところ、エラーが発生しました。
エラーメッセージは「CRT detected that the application wrote to memory after end of heap buffer;」です。解決方法を教えてください。
int型の配列を0で初期化しようと思い
~クラスメンバ~
int push_counter[20] ;
~コンストラクタ内~
push_counter[20] = {};
と書いて実行、終了したら
CRT detected that the application wrote to memory after
end of heap buffer;
というエラーが出ました。
存在しないものにアクセスしてますよー
って意味だと思うのですが、
for( int i=0 ; i<20 ; i++ ) push_counter[i] = 0;
にすればエラーは出なくなったのですが、
push_counter[20] = {};
この書き方でも出来ると思うのですが何故なのでしょうか…
お礼
なるほど! あるサイト様で int data[100] = {}; と書いておられたので、 そのまま書いてしまいましたが 初期化と代入の違いだったってことですね(恐らく…) ありがとうございました!