170 похожих чатов

Получил в терминале * stack smashing detected *: terminated. С

того что почитал, это встроенная в gcc защита от дебила, когда буффер переполняется. Почему, чисто в теории, так происходит - понятно, я рекурсивно прохожусь по всех директориях системы. Но, как это правильно исправить? Тут больше вопрос по тому как оно устроено внутри. Если у меня 5 раз рекурсивно вызвалась функция, например, она забирала себе участок памяти каждый раз. Но, например, если отработали 4 из 5 этих функций, я себе представляю, что место, с этих 4х функций, при возврате вернулось в пользование. Это так? Или сначала рекурсивная функция (или даже программа в целом) должна отработать полностью и завершиться, дабы память вернулась?

9 ответов

42 просмотра

Показывай код. Пять раз вызванная рекурсивно функция не переполнит стек, если там нет жирнющих локальных переменных. Насчёт возврата памяти - всё так, память "возвращается" в момент завершения выполнения функции

TeeGeRoN-Corp Автор вопроса
Alexander Karaev
Показывай код. Пять раз вызванная рекурсивно функц...

Это я для примера. Сейчас с компа кину. Скорее всего переменные там достаточно занимают, дабы положить буффер.

TeeGeRoN-Corp Автор вопроса

В main`e начинается поиск с дир /home. Можно поменять. А ломается примерно на 14й директории внутрь.

TeeGeRoN Corp
В main`e начинается поиск с дир /home. Можно помен...

Это не stack overflow, а buffer overflow - скорее всего, на имя директории не хватает 255 символов

TeeGeRoN-Corp Автор вопроса
Alexander Karaev
Это не stack overflow, а buffer overflow - скорее ...

‘nextdir’ accessing 1000 bytes in a region of size 255 [-Wstringop-overflow=] Варнинг получаю. Вроде как я не могу больше 255 передать внутрь

TeeGeRoN-Corp Автор вопроса
Denis P
char filename[256]; char seachFile[256];

я везде заменил на 1000

Похожие вопросы

Обсуждают сегодня

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
7
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Карта сайта