Der*_*rek 1 c malloc structure
我有一个像这样定义的结构:
typedef struct {
int n;
int *n_p;
void **list_pp;
size_t rec_size;
int n_buffs;
size_t buff_size
} fl_hdr_type;
Run Code Online (Sandbox Code Playgroud)
在我的代码中我有一个initlialization函数,具有以下功能
fl_hdr_type *fl_hdr;
fl_hdr = malloc(sizeof(fl_hdr_type) + (buff_size_n * rec_size_n));
Run Code Online (Sandbox Code Playgroud)
将那些缓冲区大小传递给函数,以便为缓冲区提供空间.
尺寸通常很小...... 100*50或者类似的东西.这个系统上有很多内存来分配它.我实际上无法发布堆栈跟踪,因为此代码位于另一个网络上,但是从核心文件中的dbx中提取了一些信息:
buff_size_n = 32,rec_size_n = 186
和malloc.c中的stack..line数字
t_splay:861
t_delete:796
realfree: 531
cleanfree:945
_malloc:230
_malloc:186
Run Code Online (Sandbox Code Playgroud)
任何想法为什么失败?
尝试通过valgrind运行程序,查看它报告的内容.在程序的其他部分,你可能已经损坏了自由列表或者malloc看到的其他东西.