c - 这段代码中的段错误在哪里?

标签 c

我认为 malloc 分配错误,为什么?

 int ** array;
  int i,j;

  array=malloc(10*sizeof(int *));

  for(i=0; i<10; i++)
    for (j=0;j<10; j++)
        array[i][j]=i*j;

最佳答案

您有一个二维数组,因此您需要分配足够的空间来容纳 100 个元素。或者,您需要在将内容放入该行之前分配每一列(每行)。如果数组是锯齿状数组,每行具有不同数量的元素,我只会执行后者。

array=malloc(100*sizeof(int)); 

for(i=0; i<10; i++) 
  for (j=0;j<10; j++) 
    array[i*10+j]=i*j; 

array=malloc(10*sizeof(int *)); // rows

for(i=0; i<10; i++) {
  array[i] = malloc(10*sizeof(int));  // columns
  for (j=0;j<10; j++) 
      array[i][j]=i*j;
}

关于c - 这段代码中的段错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043749/

相关文章:

c - #define 与常量的优缺点?

交叉编译shellcode到arm

c - socket编程中getaddrinfo函数的困惑

将多个 C 代码编译为一个汇编文件

c - 使用 fwrite 将结构存储在文件中

c - 在 C 中运行 opencv 代码时出现错误

c - 如何正确避免 avformat_new_stream 的 avcodec_alloc_context3 泄漏?

c++ - 如何使用二维数组来计算和存储其他数组中值的频率?

用于编译测试的 CMake 和 CMocka 标准断言

c - long, char 指针的指针运算