对于结构体嵌套的结构在用完后free释放时,可能会出现的" Windows 已在 **.exe 中触发一个断点。其原因可能是堆被损坏"问题,
如:
typedef struct{
int k;
int data[100];
}obsd_t;
typedef struct{
int m;
obsd_t *obs;
}raw_t;
typedef struct{
int n;
raw_t raw
}strfile_t;
可以看出结果提strfile_t中包含结构体raw_t。
由于需要,在同一函数中,定义了结构体raw_t和strfilr_t指正:
raw_t *rawww;
strfile *str;
为对他们分配内存初始化以及释放内存定义函数 init_raw(raw_t *raw);
init_strfile(strfile_t *str);
free_raw(raw_t *raw);
free_strfile(strfile_t *str);
这是问题出现了,在同一个函数,定义两个指针
aw_t *raw;
strfile *str;
并将它们分配内存初始化后,再函数中使用,使用完后将两个结构体指针内存释放并置NULL时:if(raw!=NULL)
{
free_raw