Max*_*ien 5 c malloc struct const
我正在编辑一段代码,这是一个大项目的一部分,它使用"const"来初始化一堆数组.因为我想参数化这些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;
}
Run Code Online (Sandbox Code Playgroud)
注意:在程序代码中,我正在编辑globalx,而globaly是指定命名空间中的const.现在我删除了"const",这样它们就可以作为一次设置的参数.
总结:如何为结构内的子结构正确分配内存?非常感谢你!
马克斯
这是 C 或 C++ 代码。标签上写着 C++,但代码看起来就像 C。为什么使用malloc而不是new?
来回答你的问题。为该结构提供一个构造函数来分配内存,并为该结构提供一个析构函数来删除它。
请记住,在 C++ 中,类和结构之间的唯一区别是,类中的成员默认为私有成员,而结构中的成员默认为公共成员。