像下面这样的结构工作得很好,我可以在调用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/

10-09 09:36