C语言结构的malloc异常

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)

任何想法为什么失败?

fra*_*nkc 8

尝试通过valgrind运行程序,查看它报告的内容.在程序的其他部分,你可能已经损坏了自由列表或者malloc看到的其他东西.

  • +1如果程序在*`malloc`中崩溃*,几乎可以保证你在其他地方损坏了堆. (4认同)