繁体   English   中英

给结构中的二维数组赋值是段错误

[英]Assigning a value to a 2-d array in a struct is segfaulting

这是代码:

typedef struct _Matrix {
    int rows;
    int cols;
    int** elements;
} Matrix;

int main(int argc, char* argv[])
{
    Matrix *matrix1;
    matrix1 = malloc(sizeof(Matrix));

    matrix1->rows = 2;
    matrix1->cols = 2;
    matrix1->elements = malloc(sizeof(int) * 4);
    matrix1->elements[0][0] = 1;
    matrix1->elements[0][1] = 2;
    matrix1->elements[1][0] = 3;
    matrix1->elements[1][1] = 4;
}

我不确定我在这里缺少什么。 matrix1->elements应该是2d数组/指针,而我只是想为该数组赋值。

它在这一行发生段错误: matrix1->elements[0][0] = 1;

替换行:

matrix1->elements = malloc(sizeof(int) * 4);

通过

matrix1->elements = malloc(sizeof(int*) * 2);
matrix1->elements[0] = malloc(sizeof(int) * 2);
matrix1->elements[1] = malloc(sizeof(int) * 2);

第一行为4 int分配内存。 当您在该内存上使用element[0]时,您正在将一个int int* 当您这样做时,会遇到一系列问题。

正确的方法是:

  1. 2 int*分配内存。
  2. 为每个int*分配内存以保存int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM