|
|
|
LeonidPr |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Сегодня столкнулся со странной проблемой. Свел её к минимальному неработающему варианту.
Вот такой код при выполнении дает Segmentation fault
gcc 4.5.2 из сборки MinGW После того как подумал переделал так
Этот вариант собирается и исполняется без проблем. Но хотелось бы понять, почему первый вариант не работает? А вот еще, попробовал собрать и запустить первый вариант в C++ Builder 5 - все выполнилось без проблем. Мои измышления - в первом варианте выделяется память под строку (временный объект, неименованный), затем адрес этой области присваивается указателю test_str, но на момент вызова функции test, эта область уже оказывается освобождена (почему?) и возникает ошибка. Объяснение фантастическое, но я пока ума не приложу, что может быть еще? --------------------
pkunzip.zip |
||||
|
|||||
leniviy |
|
|||
Опытный Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
я думаю, он поместил строку в ридонли секцию.
http://stackoverflow.com/questions/164194/...ing-to-a-string С ключом -Wwrite-strings gcc пишет:
Это сообщение отредактировал(а) leniviy - 11.5.2014, 19:38 |
|||
|
||||
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Спасибо за ссылку!
Варнинг видел, но не думал что компилятор в секцию .text положит строку, но сейчас Map файл посмотрел, да, действительно туда заносит. Это сообщение отредактировал(а) LeonidPr - 11.5.2014, 20:18 --------------------
pkunzip.zip |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | GNU toolchain | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |