I的结构所定义的结构,如下所示:异常上的malloc在C
typedef struct {
int n;
int *n_p;
void **list_pp;
size_t rec_size;
int n_buffs;
size_t buff_size
} fl_hdr_type;
和在我的代码我有一个函数,该函数具有以下
fl_hdr_type *fl_hdr;
fl_hdr = malloc(sizeof(fl_hdr_type) + (buff_size_n * rec_size_n));
initlialization其中那些缓冲大小被传递给函数以允许缓冲区的空间。
大小是非常小的通常..100 * 50或类似的..这个系统上的内存分配给它。 我不能真正张贴堆栈跟踪,因为这个代码是另一个网络上,但是从dbx中的核心文件拉到一些信息:
buff_size_n = 32,rec_size_n = 186
和stack..line来自malloc.c的数字
t_splay:861
t_delete:796
realfree: 531
cleanfree:945
_malloc:230
_malloc:186
任何想法为什么会失败?
buff_size_n和rec_size_n失败时的具体值是什么?当它失败,崩溃或malloc返回NULL或..时会发生什么? – nos 2010-04-26 17:24:45
你确定这是对'malloc'的调用失败吗? “buff_size_n”或“rec_size_n”可能是负值吗?您是否尝试用例如'malloc(sizeof(...)+ ...)'替换'malloc '的malloc(5000)'? – stakx 2010-04-26 17:26:31
c没有例外 – 2010-04-26 17:31:06