Итак, мне нужна помощь. Я работаю над проектом на С++. Однако, я думаю, мне удалось каким-то образом развратить мою кучу. Это связано с тем, что я добавил класс std::string
в класс и присвоил ему значение из другого std::string
:
std::string hello = "Hello, world.\n";
/* exampleString = "Hello, world.\n" would work fine. */
exampleString = hello;
сбой в моей системе с дампом стека. Поэтому в основном мне нужно остановить и пропустить все мои инструменты управления кодом и памятью и выяснить, где я напортачил. Кодовая база по-прежнему небольшая (около 1000 строк), поэтому это легко сделать.
Тем не менее, я над головой с такими вещами, поэтому я думал, что выброшу его там. Я нахожусь в системе Linux и трясусь с помощью valgrind
, и, не зная полностью, что я делаю, он сообщил, что деструктор std::string
был недопустимым. Я должен признать, что термин "куча коррупции" относится к поиску Google; любые статьи общего назначения по подобным вещам также будут оценены.
(In до rm -rf ProjectDir
, повторите попытку в С#: D)
EDIT: Я не дал понять, но то, о чем я прошу, является советом по диагностике подобных проблем с памятью. Я знаю, что материал std::string прав, так что это что-то я сделал (или ошибка, но там не проблема с выбором). Я уверен, что смогу проверить код, который я написал, и вы очень умные люди увидели проблему в кратчайшие сроки, но я хочу добавить такой анализ кода в свой "набор инструментов".