※ ChatGPTを利用し、要約された質問です(原文:メモリ開放について)
メモリ開放について
動的配列hogeがあります。
まずhogeにint*2分を確保し、hoge[0]にjの値を代入します。
そしてiが0からnまでの間にiがある条件を満たしたらhoge[1]に
i-1を代入し、ここでreallocで再びint*2分を確保して、hoge[2]に
iを代入していくという処理をしたいと思っています。
このときすべての処理が終わってfree(hoge)を行うと正常終了
せず以下のようにダイアログがでます。
「問題が発生したため、xxx.exe を終了します。
ご不便をおかけして申し訳ありません。」
環境は
OS:Windows XP home
コンパイラはborand C++
です。
どなたか原因わかりますでしょうか?よろしくお願いします。
int i,n;
int j = 0;
int *hoge;
hoge = (int *)malloc(sizeof(int) * 2);
hoge[0] = j;
for(i = 0; i < n; i++){
if(iがある条件を満たしたら){
hoge[(j*2)+1] = i - 1;
j++;
hoge = (int *)realloc(hoge,sizeof(int) * 2);
hoge[(j*2)] = i;
}
else{
別の処理
}
}
hoge[(j*2)] = i;
別処理
free(hoge);
お礼
返信が大変遅くなりもうわけございませんでした。 内容は理解できました。根本的に間違えていました。 ありがとうございました。