次のような構造体は問題なく動作します。malloc(sizeof(mystruct))を呼び出した後にtを使用できます。
struct mystruct {
MyDef *t[5];
};
次のように、 MyDefの配列の長さを動的に設定できるようにしたい:
struct mystruct {
MyDef **t;
int size;
};
これを機能させるには、 malloc(sizeof(mystruct))に追加して何をする必要があるので、 TestStruct->t[3] = somethingを実行できますか? セグメンテーション違反が発生しています。
ありがとう!
私が盲目でない限り、セグフォルトを引き起こすコードで編集してください。これはこれまでの答えのようです:
#include <stdio.h>
typedef struct mydef {
int t;
int y;
int k;
} MyDef;
typedef struct mystruct {
MyDef **t;
int size;
} MyStruct;
int main(){
MyStruct *m;
if (m = (MyStruct *)malloc(sizeof(MyStruct)) == NULL)
return 0;
m->size = 11; //seg fault
if (m->t = malloc(m->size * sizeof(*m->t)) == NULL)
return 0;
return 0;
}