Я запустил программу поиска по глубине в C++ для очень большого графика. Dfs записывается рекурсивным образом. Я получил ошибку сегментации 11 на своем ноутбуке, но не могу найти никаких ошибок. Затем я запустил его на сервере linux, он работает нормально.Поведение разлома сегментации на разных машинах
Мне любопытно, в чем разница. Я подозревал размер стека, потому что программа рекурсивна, но когда я проверил: ulimit -a
, оба компьютера имеют размер стека 8192 кБ. Я не могу найти другие ограничения, которые могут вызвать эту проблему. Вы знаете, почему я получил разницу? Спасибо!
Запустите его через отладчик/valgrind/и т. Д. –
Вы можете получить разницу, потому что ваша программа может иметь ошибку, которая, как оказалось, работает на одной платформе, а не на другой. Решение состоит в том, чтобы исправить ошибку. Инструменты, предлагаемые Грегором, заслуживают изучения и использования. Я буду размышлять и говорить, что это, вероятно, недопустимый доступ к памяти, такой как ошибка за один раз, использование послезаботки, использование неинициализированной памяти и т. Д. – Adam
Когда один и тот же код действует по-другому, возможно, существует некоторое неопределенное поведение вокруг – Jack