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