我有一个结构,看起来像这样:如何在结构中分配固定大小的二维数组?
typedef struct _my_struct {
float first_vector[SOME_NUM][OTHER_NUM];
float second_vector[SOME_NUM][OTHER_NUM];
int some_val;
} my_struct;
我想要做的:
my_struct * thing = (my_struct *)malloc(sizeof(my_struct));
但是,当我这样做,然后尝试在向量访问什么,我得到一个seg故障。
如果我不是在声明该结构中的载体:
typedef struct _my_struct {
float **first_vector;
float **second_vector;
int some_val;
} my_struct;
,然后用分配:
my_struct->first_vector = (float**)malloc(sizeof(float*) * SOME_NUM);
my_struct->second_vector = (float**)malloc(sizeof(float*) * SOME_NUM);
int i;
for (i = 0; i < SOME_NUM; i++){
my_struct->first_vector[i] = (float*)malloc(sizeof(float) * OTHER_NUM);
my_struct->second_vector[i] = (float*)malloc(sizeof(float) * OTHER_NUM);
}
然后一切工作正常。由于第一个和第二个向量的大小是固定的,并且在编译时已知,所以似乎很奇怪我必须为它们单独分配内存。有没有办法在结构中声明它们,这样我就可以malloc一个新的结构,而不需要分别为每个向量分配内存?
第二个代码段是否是错字? 'mystruct * struct'没有意义。 – Collin 2012-03-22 20:02:09
不,它只是真的不清楚(struct应该是变量的名字......)我已经更新了。 – 2012-03-22 20:45:48
您修正了其中一个拼写错误,但'sizeof my_struct'应该由'sizeof(my_struct)'。 – 2012-03-22 20:50:48