我在编辑一段代码,这是大型项目的一部分,它使用“const's”来初始化一堆数组。 因为我想参数化这些const的,所以我必须调整代码以使用“malloc”来分配内存。 不幸的是,结构有一个问题:我无法在结构本身中分配动态内存。在外面做会导致原始代码的很多修改。结构内的动态内存
这里有一个小例子:
int globalx,globaly;
struct bigStruct{
struct subStruct{
double info1;
double info2;
bool valid;
};
double data;
//subStruct bar[globalx][globaly];
subStruct ** bar=(subStruct**)malloc(globalx*sizeof(subStruct*));
for(int i=0;i<globalx;i++)
bar[i]=(*subStruct)malloc(globaly*sizeof(subStruct));
};
int main(){
globalx=2;
globaly=3;
bigStruct foo;
for(int i=0;i<globalx;i++)
for(int j=0;j<globaly;j++){
foo.bar[i][j].info1=i+j;
foo.bar[i][j].info2=i*j;
foo.bar[i][j].valid=(i==j);
}
return 0;
}
注:在程序代码中我编辑globalx和globaly是常量在指定的命名空间。现在我删除了“const”,以便它们可以充当只设置一次的参数。
总结:如何正确地为struct struct中的子结构分配内存? 非常感谢!
最大
你确定这是'C++'而不是'c'吗? – 2010-03-22 13:41:52
**不要**在对象上使用'malloc'或'free'。构造函数和析构函数将不会被调用。使用'new'和'delete' – Yacoby 2010-03-22 13:41:59
这就是所谓的坏C++风格。孩子们,永远不要做。 – 2010-03-22 13:48:15