| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > GNU toolchain > SEGFAULT при обращении по указателю на строку |
| Автор: LeonidPr 11.5.2014, 19:06 | ||||
| Сегодня столкнулся со странной проблемой. Свел её к минимальному неработающему варианту. Вот такой код при выполнении дает Segmentation fault
gcc 4.5.2 из сборки MinGW После того как подумал переделал так
Этот вариант собирается и исполняется без проблем. Но хотелось бы понять, почему первый вариант не работает? А вот еще, попробовал собрать и запустить первый вариант в C++ Builder 5 - все выполнилось без проблем. Мои измышления - в первом варианте выделяется память под строку (временный объект, неименованный), затем адрес этой области присваивается указателю test_str, но на момент вызова функции test, эта область уже оказывается освобождена (почему?) и возникает ошибка. Объяснение фантастическое, но я пока ума не приложу, что может быть еще? |
| Автор: leniviy 11.5.2014, 19:29 | ||
| я думаю, он поместил строку в ридонли секцию. http://stackoverflow.com/questions/164194/why-do-i-get-a-segmentation-fault-when-writing-to-a-string С ключом -Wwrite-strings gcc пишет:
|
| Автор: LeonidPr 11.5.2014, 20:17 |
| Спасибо за ссылку! Варнинг видел, но не думал что компилятор в секцию .text положит строку, но сейчас Map файл посмотрел, да, действительно туда заносит. |