getTable
將結構的二維數組的內容取出,並將存儲在 中的int
複製到table
。但是,當我嘗試從中的table
中讀取任何內容時,運行時出現Segmentation fault
錯誤。修改函數中的2D malloc數組C
void getTable(char*s1, char*s2, char**table)
{
/*
SKIP SOME STUFF
*/
table = malloc(sizeof(char*)*(s2Len+1));
for (i = 0 ; i <= s2Len; i++)
table[i] = malloc(sizeof(char)*(s1Len+1));
for (i = 0 ; i <= s2Len; i++)
for (j = 0 ; j <= s1Len; j++)
table[i][j] = '0' + tmpTable[i][j].num;
//prints what table points to correctly
for (i = 0 ; i <= s2Len; i++)
{
printf("\n");
for (j = 0 ; j <= s1Len; j++)
printf("%2c", table[i][j]);
}
printf("\n");
}
int main(void)
{
char ** table; // for number table
/*
SKIP SOME STUFF
*/
// gives error: Segmentation fault (core dumped)
getTable(s1,s2,table);
printf("getTable test\n");
int i, j;
//
for (i = 0 ; i <= strlen(s2); i++)
{
printf("\n");
for (j = 0 ; j <= strlen(s1); j++)
printf("%c ", table[i][j]);
}
return 0;
}
在getTable()調用之前和之後打印指針表的值。它改變了嗎? – this
也許嘗試爲主表分配內存?所以把table = malloc(sizeof(char *)*(s2Len + 1));就在getTable之前。 – redFur