動的メモリ割り当てに少し問題があります。
以下は、問題を解決するために試行錯誤してきたテスト コードです (これは、現在のプロジェクトのコードと同じ問題です。これは、それを表示するためのより簡単な方法です)。
#include<stdlib.h>
#include<stdio.h>
#include<assert.h>
int main(){
int x = 5;
int *ptr = (int*) malloc(sizeof(int));
assert(ptr != NULL);
ptr = &x;
printf("x = %d\n",x);
*ptr = 3;
printf("x = %d\n",x);
free(ptr);
return 0;
}
プログラムは正常にコンパイルされ、実行すると「x = 5 x = 3」という正しい出力が出力されますが、エラーが発生します。
glibc detected ./dnam: free(): invalid pointer: 0xbfccf698
dnam はテスト プログラムの名前です。エラーについて読んだところによると、malloc/calloc/realloc していないメモリを解放したことが原因であると思われます。
このエラー メッセージの後に、バックトレースとメモリ マップが続きます。メモリ マップの最後で、プログラムが中止された (コア ダンプされた) と表示されます。