关于大结构体内存分配
小弟遇到一个棘手的内存分配问题,请各位大虾不吝指教。
原先的结构体如下(B1和B2本身又是一个嵌套的结构体),
struct A{
struct B1 b1;
struct B2 b2;
};
用到上述结构体的函数如下:
RC_Code_t param_check(const genericTrigger &Trigger,......)//genericTrigger 是一个类,类中的一个结构体变量逐级能引用到A结构体中的成员
{
const flag_t=&Trigger.***.***.****.b1;//注意到这里逐级引用到了上述结构体中的成员
const flag_t=&Trigger.***.***.****.b2;
...........
}
以上代码是完全正确的。
现在我将A结构体改成如下所示:------原先的结构体变量变成了结构体指针
struct A{
struct B1 *b1;
struct B2 *b2;
};
RC_Code_t param_check(const genericTrigger &Trigger,......)//genericTrigger 是一个类,类中的一个结构体变量逐级能引用到A结构体中的成员
{
const B1 flag_t=Trigger.***.***.****.b1;//注意到这里逐级引用到了上述结构体中的成员
const B2 data_t=Trigger.***.***.****.b2;
...........
}
这样就出现了可怕的段错误!!!
为了是A结构体中的两个指针成员能够得到正确的地址,我将代码改成了如下:
RC_Code_t param_check(const genericTrigger &Trigger,......)//genericTrigger 是一个类,类中的一个结构体变量逐级能引用到A结构体中的成员
{
const flag_t=NULL;
const data_t=NULL;
Trigger.***.***.****.b1=new B1();
Trigger.***.***.****.b2=new B2();
flag_t=Trigger.***.***.****.b1;
data_t=Trigger.***.***.****.b2;
//然后在引用到结构体B1和B2中的各个成员
..........
..........
delete Trigger.***.***.****.b1;
delete Trigger.***.***.****.b2;
}
但是依然失败,错误原因依然同上!!!
我现在怀疑仍然是指针地址不正确或者是内存分配失败!小弟非常着急!!!!!
说明一点:定义类genericTrigger、定义结构体A和定义函数param_check 分别为3个不同的文件。
请各位大虾帮我排查一下原因,小弟万分感激各位!!!
我现在充分怀疑到我的结构体内存分配有问题,但是不知道为什么会出现这样的严重问题,难道是我的分配位置不对,或者我不该在定义函数的那个文件中进行内存分配??
小弟疑惑啊。。。。。。。。