我有這樣的代碼:有人可以找到錯誤嗎?純C的realloc
int main() {
int i=0, n=0;
char sep=NULL;
double **aero=(double**)malloc(sizeof(double*));
*aero=(double*)malloc(2*sizeof(double));
printf("Zadejte souradnice:\n");
while (1) {
aero=(double**)realloc(aero,(n+1)*sizeof(double*));
for (i=0; i<n+1; i++) {
aero[i]=(double*)realloc(aero[i],2*sizeof(double));
}
if ((scanf("[%lf,%lf]%c",&aero[n][0],&aero[n][1],&sep))==3 && (sep=='\n' || sep==' ')) {
n++;
continue;
} else if (!feof(stdin)) {
printf("Nespravny vstup.\n");
freeArray2D(aero,n);
return 0;
}
break;
}
}
它工作正常,但我可以scanf函數座標(格式爲:[X,Y])只有19倍。然後它顯示我分段錯誤(核心轉儲)。我用Linux編譯器gcc -Wall -pedantic main.c -lm我不知道,問題在哪裏。謝謝你的幫助。
向我們展示一些示例輸入和'freeArray2D'函數。 –
選擇這可能有所幫助:http://stackoverflow.com/questions/7656799/segfault-with-realloc?rq = 1 –
OT:'char sep = NULL;'應該是'char sep ='\ 0';'或者'... = 0;'。 – alk