Может быть немного сложно объяснить все об этой ошибке, но я буду стараться изо всех сил.К сожалению, код настолько велик, что было бы непрактично пытаться включить его.
Я пишу академическую ОС для домашнего задания (начос, если вы должны знать), и самое последнее, что мне нужно было сделать, это реализовать взаимноеисключение в основной карте.Для этого я добавил блокировку и переменную условия на страницу в эмулируемую основную память.После этого я запускаю свой код и через один вызов обработчик исключений (в совершенно другом каталоге, отличном от базовой карты) просто отлично, но во второй раз вызывается функция, которую я получаю и выдает ошибку при следующем вызове: r=new Lock("read");
ион выглядит так:
*** glibc detected *** /home/some_other_directories/workspace/nachos3_repo/vm/nachos: malloc(): memory corruption (fast): 0x0805fe20 ***
Просто чтобы посмотреть, как он себя ведет, я изменил распределение этой блокировки, чтобы оно было внешним в моем системном файле (там много глобальных внешних ссылок), и после этого я получаюошибка сегмента при вызове fout.open("old.txt");
, которую я проследил назад через стек, чтобы быть в пределах вызова к malloc при вызове new.
Мое лучшее предположение, что моя куча становится большой, но я неконечно, если это так или как справиться с этим, если это так.Кто-нибудь может пролить свет на эту проблему?