Во вложении лежит тестовый файл. Это тестовый проект для изучения работы со списками.
Компилируется в Codeblocks (на KDesktop p6 x86_64), тип проекта = Консольное приложение, все установки - по умолчанию.
Так вот. Первый CreateNode (строка 32) создаёт узел. Всё нормально. Доходим до 2-го CreateNode (строка 36) - и тут, опаньки, на malloc (строка 46) всё рушится с такой руганью
Begin!
test2: malloc.c:3097: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Process returned -1 (0xFFFFFFFF) execution time : 0.005 s
Press ENTER to continue.
А дальше начинаются чудеса.
Чудо 1. Можно из структуры Node убрать unsigned int count;
и тогда всё работает.
Чудо 2. Или можно из структуры Node убрать char word[16];
и тогда тоже всё работает.
Чудо 3 (самое чудное). Достаточно размер массива word увеличить до 21 char word[21];
как всё начинает работать. На 20-ти еще падает, на 21 - работает.
Растолкуйте, пожалуйста, что за магическа граница размера массива..