C ++ полный сбой системы, только режим выпуска - PullRequest
0 голосов
/ 13 декабря 2011

Я реализовал специализированную древовидную структуру данных для приложения трассировки лучей.Я использую std :: list в каждом из узлов дерева для хранения элементов данных.У меня проблема в том, что при запуске приложения с этой структурой данных происходит сбой не только приложения, но и зависание всей ОС (Windows 7).Это происходит только в режиме релиза;в режиме отладки это занимает больше времени (как и ожидалось), но работает нормально.Я использую Visual Studio 2010. Запуск (Ctrl + F5) или отладка (F5) в режиме выпуска вызвали полный сбой системы.

Из того, что я обнаружил до сих пор, различное поведение между выпуском и отладкойрежим, кажется, объясняется утечками памяти, так как режим отладки (из того, что я понял) немного более прощающий.Тем не менее я ничего не нашел о приложении C ++, вызывающем сбой ОС.

Я просто хотел бы знать, при каких обстоятельствах такое поведение может происходить, поэтому я знаю, где искать.Трудно свести проблему к чему-то простому и отследить проблему, потому что трассировка лучей по своей природе является высокопараллельной и работает с большим количеством данных.

О, а проблема в нет бесконечная рекурсия, вызывающая переполнение стека.Я сделал это намеренно, и это не привело к краху ОС.

1 Ответ

2 голосов
/ 13 декабря 2011

Проверяли ли вы использование памяти в режиме отладки?Чрезмерное использование памяти и перетекание в область подкачки замедлило бы систему до чертиков - ваша система, возможно, не разбилась технически - просто стало бы очень медленным.А в режиме релиза все это распределение будет происходить с некоторой скоростью - так что вы можете посмотреть на использование памяти.

И, как вы сказали, бесконечная рекурсия не приведет к сбою ОС - она ​​всегда приводит к ошибке сегментации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...