-
- UPD Всем спасибо. Заработало. Я радикально увеличил длины строк, чтобы они были заведомо длиннее, чем текст. Эффект пропал. Код прилагаю. teap0t(1 знак., 18.03.2022 09:41, ссылка)
- Нужно писать как можно тупее, после каждого изменения индекса/указателя (или перед обращением) проверять его соответствие диапазону. Кстати, статический анализ кода показывает места возможных проблем. - VLLV(17.03.2022 21:27)
- ХЗ в чём проблема конкретно, но погадаем на кофейной гуще. Zoro(283 знак., 17.03.2022 18:33)
- Никогда не парился в решении подобных вопросов. Уже ранее отмечал тот факт, что даже для того же Power Basic (Borland) обработка строковыми операторами любого текста- пустяк! Хоть чёрта с ладаном! А уж с прямым доступом к файлам... памяти. Просто. Даже с консольными версиями компилятора. Как швейцарский нож. Все нужные $-операторы адаптированы под любые выкрутасы. Плохо, что позабыт, незаслуженно отодвинут сей приятственный в работе инструмент. Ограничения компилятора SERGHIO(575 знак., 17.03.2022 15:14)
- Видимо, все ваши переменные - в стеке. объявите их static,
посчитайте сколько памяти ушло, может просто переполнение стека? - Cкpипaч(17.03.2022 14:09)
- А со "static" где переменная окажется? - teap0t(17.03.2022 15:49)
- В секции BSS. Т.е. просто в памяти. - Cкpипaч(17.03.2022 16:36)
- Там вроде бы по умолчанию стек 1 МБайт. - SciFi(17.03.2022 15:33)
- Не это ли причина отсутствия сведений об их адресах? - teap0t(17.03.2022 15:18)
- Как вариант. - Cкpипaч(17.03.2022 15:30)
- Скорее всего это именно так. А в общем, код в студию... - Bill(17.03.2022 14:59)
- Мне не жалко кода, разве неловко за корявость, но переполнения
стека нет, потому что нет вызовов функций (кроме библиотечных). Я
не буду искать ошибки в библиотеках микрософтовского компилятора. - teap0t(17.03.2022 15:17)
- И всё-таки, код приведите. - Bill(17.03.2022 16:04)
- Дома. Завтра скину. - teap0t(17.03.2022 16:41)
- У компилятора должны быть опции на тему контроля стека на
переполнение. Не пробовали? - Cкpипaч(17.03.2022 15:31)
- Всё там обнюхал, но никаких опций контроля стека или выхода за
диапазон нет. Нифига не IAR. - teap0t(17.03.2022 15:44)
- Есть еще трюк - заполнить стек каким-нибудь специальным значением (например, 0x55). И периодически проверять, куда достало. Cкpипaч(258 знак., 17.03.2022 16:48)
- Всё там обнюхал, но никаких опций контроля стека или выхода за
диапазон нет. Нифига не IAR. - teap0t(17.03.2022 15:44)
- И всё-таки, код приведите. - Bill(17.03.2022 16:04)
- Мне не жалко кода, разве неловко за корявость, но переполнения
стека нет, потому что нет вызовов функций (кроме библиотечных). Я
не буду искать ошибки в библиотеках микрософтовского компилятора. - teap0t(17.03.2022 15:17)
- А со "static" где переменная окажется? - teap0t(17.03.2022 15:49)
- Си хреново подходит для обработки текста. Именно в таких случаях
помогает знакомство с другими языками, особенно скриптовыми. AWK,
например. - SciFi(17.03.2022 13:04)
- Писал текст вопроса и думал, что-то вроде забыл. И точно. Можно ли
решить указанную проблему без смены языка программирования, пола,
возраста, подданства и домашней планеты? Я, блять, как с ассемблера
слезть не знаю. Короче, питон не предлагать. - teap0t(17.03.2022 13:07)
- Предлагаю Pascal :) - Гyдвин(17.03.2022 13:38)
- Могу вспомнить юность и развернуть JPI Modula-2. - teap0t(17.03.2022 13:40)
- Бывают текстовые редакторы с интересными фишками типа поиск/замена
с регулярными выражениями, запись и воспроизведение макросов и т.д.
Notepad++, VS Code из того, что установлено у меня. - SciFi(17.03.2022 13:19)
- Да, я их использую (Notepad++, MultiEdit), но здесь это не подходит - слишком много надо добавлять. - teap0t(17.03.2022 13:33)
- Предлагаю Pascal :) - Гyдвин(17.03.2022 13:38)
- Писал текст вопроса и думал, что-то вроде забыл. И точно. Можно ли
решить указанную проблему без смены языка программирования, пола,
возраста, подданства и домашней планеты? Я, блять, как с ассемблера
слезть не знаю. Короче, питон не предлагать. - teap0t(17.03.2022 13:07)
- У всех "строковых" функций есть вариант с "n" - чтобы точно не
выйти за размер. - POV(17.03.2022 13:01)
- Да есть, но токены бывают разной длины и указание конкретных чисел
очень неудобно. Была мысль радикально увеличить место под каждое
текстовое поле ( ну, там, до 128 символов, когда надо работать с 20
). Может помочь? - teap0t(17.03.2022 13:11)
- с С все плохо в отличие от С++, предлагаю в Вашем случае использовать С-либу libtre klen(1 знак., 17.03.2022 13:24, ссылка)
- Ну ты можешь упростить себе жизнь описав "надстройку".. POV(89 знак., 17.03.2022 13:13)
- Да есть, но токены бывают разной длины и указание конкретных чисел
очень неудобно. Была мысль радикально увеличить место под каждое
текстовое поле ( ну, там, до 128 символов, когда надо работать с 20
). Может помочь? - teap0t(17.03.2022 13:11)