像下面这样的结构工作得很好,我可以在调用malloc(sizeof(mystruct))之后使用t:
struct mystruct {
MyDef *t[5];
};
我希望能够动态设置MyDef数组的长度,如下所示:
struct mystruct {
MyDef **t;
int size;
};
我还需要对malloc(sizeof(mystruct))做些什么才能让它工作,这样我就可以做TestStruct->t[3]=什么了只是分段错误!
谢谢!
使用导致seg故障的代码进行编辑,除非我是盲人,这似乎是迄今为止的答案:
#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;
}
最佳答案
m=(MyStruct*)malloc(sizeof(MyStruct))==空
那有什么用调用malloc,将malloc的返回值与NULL进行比较然后将比较结果(布尔值)赋给m。
其原因是“=”的优先级高于“=”。
你想要什么:
if ( (m = (MyStruct *)malloc(sizeof(MyStruct))) == NULL)
...
if ( (m->t = malloc(m->size * sizeof(*m->t))) == NULL)
关于c - 如何在C中将“MyDef ** t”分配给特定长度,而不是“MyDef * t [5]”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4032764/