Ошибка шины при попытке создать новый объект в переполнении стека

Я сталкиваюсь со странной ошибкой шины при попытке создать объект в C ++. Это моя трассировка GDB при сбое программы:

#0  0xff146ff4 in _malloc_unlocked () from /usr/lib/libc.so.1
#1  0xff146e40 in malloc () from /usr/lib/libc.so.1
#2  0x24430 in __builtin_new (sz=128) at /usr/local/src/gcc-2.95.1/gcc/cp/new1.cc:84
#3  0x1e71c in FileHeader::Allocate (this=0x3f5d8, freeMap=0x3eea0, fileSize=5719)
at ../filesys/filehdr.cc:63
#4  0x1f61c in FileSystem::Create (this=0x3d8b8, name=0xffbff8f3 "test", initialSize=5719)
at ../filesys/filesys.cc:200
#5  0x1ffac in Copy (from=0xffbff8e4 "assignment 2.c", to=0xffbff8f3 "test")
at ../filesys/fstest.cc:52
#6  0x15150 in main (argc=3, argv=0xffbff768) at ../threads/main.cc:116

Соответствующая строка кода из filehdr.cc:

IndirectHeader * s;
s = new IndirectHeader;

Вылетает на второй линии. Я подумал, что, возможно, я явно не использовал свой собственный конструктор, но добавление одного не помогло. Мне кажется, что есть еще одна простая проблема, которую я не замечаю, но я не смог ее найти. Любой совет будет оценен.

0

Решение

То, что вы видите в обратном следе, — это сбой, выделяющий память для поддержки вашего IndirectHeader, Он еще даже не начал создавать объект, потому что он все еще пытается выделить для него память. Скорее всего, ранее в вашей программе была ошибка, которая повредила кучу.

2

Другие решения

Других решений пока нет …