像下面这样的结构可以正常工作,我可以在调用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;
}