c - 通过二维指针数组循环的段错误

标签 c loops pointers segmentation-fault

当我遍历这个二维指针数组时出现段错误

声明:

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));

无论 y 和 x 是什么,循环都会在 addr[2][0] 处返回一个段错误

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 *)); 

关于c - 通过二维指针数组循环的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749227/

相关文章:

php - 如何更改 While 循环内的单行数组变量并使用新结果更新数据库表

python - 如何根据使用特定列进行比较的另一个 CSV 中的行删除一个 CSV 中的行

c++ - 如何删除 STD::List 中最近的 "Point"对象到某个 x,y?

c - 二维数组增量

c - pic32写入flash c编程

javascript - 在循环中重新定义变量不会使其变得未定义

c++ - 带 *& 参数的递归 void 函数

c++ - 将 unsigned short* 转换为 int*

c - 我需要帮助以非递归方式创建 k 组合算法

c - fgets() 不读取整个文件