getTable
获取二维结构数组的内容并复制存储在中的 int
它到表
。但是,当我尝试从 main
中的 table
读取任何内容时,我在运行时收到 Segmentation failure
错误。
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)中修改了局部变量(表),但我不知道您在哪里将其传递回调用者。我认为调用者(主要)仍在查看表的原始值。
如果您将 main 的 table 值初始化为 NULL,并在调用函数后使用 %p table 的值 printf 我认为它仍然会指向 NULL。
关于c - 修改 C 函数内的二维 malloc 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23162571/