当我在这个二维指针数组中循环时出现了分段错误
宣言:

char **addr;

addr=malloc((y)*sizeof(char)); //y is 3
for(i=0;i<y;i++)
{
        *(addr+i)=malloc(x*sizeof(char)); //x is 100
}

独立通道工程:
*(*(addr+2)+0)='a';
printf("%c\n",*(*(addr+2)+0));

循环在addr[2][0]处返回一个分段错误,而不管y和x是什么
for(j=0;j<x;j++)
{
        for(i=0;i<y;i++)
        {
                printf("%d %d\n",j,i);
                *(*(addr+j)+i)='a';
        }
}

最佳答案

addr=malloc((y)*sizeof(char));

必须替换为
addr = malloc(y * sizeof(char *));

07-27 22:19
查看更多