-1
cで多次元配列を作成しようとしています。テスト目的のために、私は最初の行の最初の要素を印刷しようとしています。コードはその時点まで機能するようです。しかし、私は要素をもう一度印刷しようとすると、私はセグメンテーションフォールトを取得:配列の要素を2回印刷すると、セグメンテーションフォールトが発生する
#include <stdbool.h>
#include <stdio.h>
typedef struct Matrix {
bool** elem;
int length;
} Matrix;
void generateMatrix(Matrix* m);
int main() {
Matrix m = {0, 0};
generateMatrix(&m);
fprintf(stdout, "%d ", m.elem[0][0]);
fprintf(stdout, "\n");
// Comment next line if you want it to work
fprintf(stdout, "%d ", m.elem[0][0]);
return 0;
}
void generateMatrix(Matrix* m) {
const int size = 2;
bool* ptrArray[size];
bool ptr1[] = {false, false};
bool ptr2[] = {true, true};
ptrArray[0] = ptr1;
ptrArray[1] = ptr2;
m->elem = ptrArray;
m->length = size;
}
私はUbuntuの上でGCCを使用しています:
$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
なぜこの出来事はありますか?