У меня есть структура, определяемая следующим образом:Исключение на таНос для структуры в 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;
и в моем коде у меня есть функция для initlialization, которая имеет следующий
fl_hdr_type *fl_hdr;
fl_hdr = malloc(sizeof(fl_hdr_type) + (buff_size_n * rec_size_n));
где те буфера размер передается функции, позволяющей также пространство для буферов.
Размер довольно маленький типично.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
Вы уверены, что это вызов «malloc», который терпит неудачу? Может ли 'buff_size_n' или' rec_size_n' быть отрицательное значение? Вы пытались заменить 'malloc (sizeof (...) + ...)', например. 'ТаНос (5000)'? – stakx
c не имеет исключений – 2010-04-26 17:31:06