我们说我们有以下设计:
typedef struct {
double **pdouble;
int *pint
}foo;
现在我要分配:
foo *pfoo;
事实是,pdouble的总数是已知的,让我们说n;如果我们说** pdouble就像pdouble [a] [b],a也是众所周知的。表示a * b = n。但是b是动态的。 mean pdouble [1]可能包含b列,而pdouble [2]可能包含b'列数,b和b',b" ......将逐渐在程序中生成。
值得注意的是b + b' + b" + ... = n。
是否可以仅使用n和a来分配foo?
我要稍微编辑一下,这样我的问题就会变得更容易理解。
allocation_func(in size, int block_size)
foo *pfoo;
pfoo = (foo*) malloc(sizeof(foo))
/*some code here to do block_size number of *double which I don't know*/
foo->pdouble = (double**) malloc ( size * sizeof(double))
}
我忽略了每个人都知道的错误和其他需要的东西 多数民众赞成;
答案 0 :(得分:1)
首先分配struct
内存
foo *pfoo = malloc(sizeof *pfoo);
然后为struct
成员double **pdouble;
//for example purpose i take 50x50 array
pfoo->pdouble = malloc(50* sizeof(double *));
for(int i=0;i<50;i++)
pfoo->pdouble [i] = malloc(50* sizeof(double ));
最后为struct
成员int *pint
pfoo->pint=malloc(100*sizeof(int)); //100 is just for example