|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
Переполнение буфера13.05.2013, 00:46. Показов 8330. Ответов 26
Метки нет (Все метки)
Подскажите, пожалуйста кто-нибудь, в чем беда... Во время выполения программы пишет, что буфер переполнен, что точка останова смещена и "Дополнительные сведения см. в разделе "Инструкции по отладке в случае переполнения буфера"". Как справиться с сией проблемой? Что нужно изменять в коде программы?
0
|
|
| 13.05.2013, 00:46 | |
|
Ответы с готовыми решениями:
26
переполнение буфера Переполнение буфера Переполнение буфера |
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||
| 13.05.2013, 00:49 | ||
|
без кода ничего никто не скажет. какой буфер, где и при каких условиях.
в таких случаях кэп советует
0
|
||
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
||||||||||||||||
| 13.05.2013, 01:09 [ТС] | ||||||||||||||||
|
Вот код программы:
Заголовочный файл класса
Добавлено через 2 минуты И выделенный момент с ошибкой: "8-bit_BMP.exe": Загружено: "D:\Vs\8-bit_BMP\Debug\8-bit_BMP.exe", Символы загружены. "8-bit_BMP.exe": Загружено: "C:\Windows\System32\ntdll.dll", Невозможно найти или открыть файл PDB "8-bit_BMP.exe": Загружено: "C:\Program Files\AVAST Software\Avast\snxhk.dll", Невозможно найти или открыть файл PDB "8-bit_BMP.exe": Загружено: "C:\Windows\System32\kernel32.dll", Невозможно найти или открыть файл PDB "8-bit_BMP.exe": Загружено: "C:\Windows\System32\KernelBase.dll" , Невозможно найти или открыть файл PDB "8-bit_BMP.exe": Загружено: "C:\Windows\System32\msvcp100d.dll", Символы загружены. "8-bit_BMP.exe": Загружено: "C:\Windows\System32\msvcr100d.dll", Символы загружены. Первый этап обработки исключения в "0x00af5286" в "8-bit_BMP.exe": 0xC0000005: Нарушение прав доступа при чтении "0x999999a5". В 8-bit_BMP.exe возникло переполнение буфера, что привело к повреждению внутреннего состояния программы. Нажмите кнопку "Прервать", чтобы отладить программу, или кнопку "Продолжить", чтобы завершить программу. Дополнительные сведения см. в разделе "Инструкции по отладке в случае переполнения буфера". В 8-bit_BMP.exe возникло переполнение буфера, что привело к повреждению внутреннего состояния программы. Нажмите кнопку "Прервать", чтобы отладить программу, или кнопку "Продолжить", чтобы завершить программу. Дополнительные сведения см. в разделе "Инструкции по отладке в случае переполнения буфера". STATUS_STACK_BUFFER_OVERRUN encountered 8-bit_BMP.exe привело в действие точку остановка Программа "[7212] 8-bit_BMP.exe: Машинный код" завершилась с кодом -1073740791 (0xc0000409).
0
|
||||||||||||||||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 13.05.2013, 01:22 | |
|
осваивайте отладку программ.
в студии с этим все просто. беглый взгляд падает на строку 14: f.read((char*)& RGB, 1024); возможно хотелось так: f.read((char*)RGB, 1024);
1
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 01:29 [ТС] | |
|
Исправление этого момента помогло..Немного. Теперь буфер не переполняется, но все равно программа падает
0
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 01:30 [ТС] | |
|
Как я понимаю, ему не нравится размер, вот только размер чего? И почему не нравится?
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 13.05.2013, 08:19 | ||
|
0
|
||
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
||||||
| 13.05.2013, 08:24 [ТС] | ||||||
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
|
|
| 13.05.2013, 08:36 | |
|
Eagle123,
вот на этой картинке что ты привел нажми продолжить программа упадет еще раз тогда нажми прервать и попадешь в отладчик на точку что вызвала исключение скорее всего попадешь в какую нибудь системную функцию тогда идешь в отладчике в окошка стека там будет список функций которые вызваны до аварии просмотри их сверху вниз и тогда дойдешь до строки с неправильными параметрами
1
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 14:40 [ТС] | |
|
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 13.05.2013, 14:46 | |
|
0
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 18:46 [ТС] | |
|
В итоге считывается информация из файла правильно, и массив создается тоже верно.
И все бы хорошо, только рисует не флаг, а вот это.
0
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
||||||
| 13.05.2013, 18:47 [ТС] | ||||||
|
Вот функция, которая это рисует. Что-то тут не так
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
|
|
| 13.05.2013, 19:12 | |
|
Eagle123,
А ты откуда берешь размеры Из заголовка файла? а ты учел что там два размера размер картинки и размер буфера выравненный то ли на 2 то ли на 4 (нет сейчас спецификации под рукой) и они могут различаться и учти что в BMP шке картинка размещена вверх ногами т.е самая нижняя строчка в буфере самая первая Добавлено через 1 минуту Да и с палирой разберись ты видать её не загружаешь у французского флага никак не такие цвета
1
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 19:22 [ТС] | |
|
С цветами все нормально. Там если увеличить, то видны нужные полосы (синего, белого и красного цветов). Только на картинке они накладываются друг на друга... Получается, если запись идет с конца, то надо делать не сине-бело-красный, а красно-бело-синий флаг?? А вот с размерами теперь не ясно, там же в структуре заголовка только одна длина и ширина?
Еще нашел, что надо учитывать кол-во байтов на пиксель..Это так?
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
|
||
| 13.05.2013, 19:36 | ||
|
http://www.firststeps.ru/mfc/msdn/r.php?114
Вот это 22h 4 biSizeIm Размер изображения в байтах и это 12h 4 biWidth Ширина Bitmap-а в пикселях 16h 4 biHeight Высота Bitmap-а в пикселях Добавлено через 3 минуты то считываешь 1 байт красный 2 байт зеленый 3 байт синий 4 зарезервирован т.е на одну точку считывать нужно 4 байта если 256 цветов то на одну точку 1 байт а если двухцветное изображение то один байт на 8 точек Добавлено через 44 секунды вот еще http://c-site.h1.ru/infa/bmp_struct.htm сноску почитай
1
|
||
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 19:40 [ТС] | |
|
Размер изображения в байтах = 226000, размер в пикселях т.е. h.bih.biHeight * h.bih.biWidth = 900 * 500 = 450000. И по каким размерами тогда составлять массив для цветов и записывать его, по байтам??
Добавлено через 2 минуты Изображение 16-ти цветное
0
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 19:47 [ТС] | |
|
Изменил началиный размер изображения ( сделал размеры сторон кратные 4), получилось вот так
0
|
|
|
6 / 6 / 2
Регистрация: 03.10.2012
Сообщений: 54
|
|
| 13.05.2013, 19:51 [ТС] | |
|
Но сразу заметно, что изображение закрашено не полностью, видны какие-то полосы. Поэтому цвета так смешиваются
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
|
||
| 13.05.2013, 20:49 | ||
|
или поройся в сети найди готовые библиотеки
0
|
||
| 13.05.2013, 20:49 | |
|
Помогаю со студенческими работами здесь
20
Переполнение буфера Переполнение буфера Переполнение буфера! (наверное) Переполнение буфера . Что делать ? Переполнение буфера при вводе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|