前提・実現したいこと
C言語でmalloc関数とrealloc関数を使ったプログラムを作っています。
reallocの処理を行う自作の関数を2回実行しようとすると、1回目は正常に動きますが、二回目は正常に動きません。
発生している問題・エラーメッセージ
2回目のvoid changeが正常に動きません。またコアダンプします。
該当のソースコード
#include <stdio.h> #include <stdlib.h> void change(int *a, int num); int main(void){ int *a=NULL,i; a = (int *)malloc(sizeof(int)*10); if(a==NULL){return 0;printf("err1");}//エラー処理 for(i=0;i<10;i++){ a[i] = i; printf("1:a[%d]:%d\n",i,a[i]); } change(a,20);//realloc関数で for(int i=0;i<=10;i++){ printf("3a[%d]:%d\n",i,a[i]); } change(a,30); printf("finish\n"); free(a); a=NULL; return 0; } void change(int *a, int num){ int *b= NULL; b=(int *)realloc(a,sizeof(int)*(num)); if(b==NULL){free(a); printf("err2");} b[10]=10; a=b; for(int i=0;i<=10;i++){ printf("2a[%d]:%d\n",i,a[i]); } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
実行はcygwinで行っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/02 08:07
2020/11/02 08:10