假设我们有以下设计:
typedef struct {
double **pdouble;
int *pint
}foo;
现在我想分配:
foo *pfoo;
问题是pdouble的总数是已知的,假设是n;如果我们说**pdouble类似于pdouble [a][b],那么a也是已知的。表示a*b =n。但是b是动态的。平均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))
}
我忽略了错误和其他每个人都知道的必要的东西。
这所有的;
首先分配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