Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
#1

Переполнение буфера - C++

13.05.2013, 00:46. Просмотров 2554. Ответов 26
Метки нет (Все метки)

Подскажите, пожалуйста кто-нибудь, в чем беда... Во время выполения программы пишет, что буфер переполнен, что точка останова смещена и "Дополнительные сведения см. в разделе "Инструкции по отладке в случае переполнения буфера"". Как справиться с сией проблемой? Что нужно изменять в коде программы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2013, 00:46     Переполнение буфера
Посмотрите здесь:

переполнение буфера - C++
Что такое переполнение буфера?

Переполнение буфера - C++
В программе имеется форма и записывается текстовые файлы. Когда она запускается всё работает нормально, ProgressBar доходит до...

Переполнение буфера - C++
Добрый день! В общем: #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv) { ...

Переполнение буфера - C++
Объясните почему вылетает ошибка и помогите исправить. Зарание спасибо возникло переполнение буфера, что привело к повреждению...

Переполнение буфера - C++
Не могу найти, где у меня ошибка, выдает переполнение буфера, подскажите пожалуйста. Здесь реализуется связный список #include...

Переполнение буфера! (наверное) - C++
Идет открытие порта звуковой карты, получение битов, запись битов в буфер и дальнейшие манипуляции с ним (пока только вывод в текстовый...

Переполнение буфера . Что делать ? - C++
#include "stdafx.h" #include <conio.h> #include <stdio.h> #include <string.h> int main() { char in; /* строка...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
13.05.2013, 19:36     Переполнение буфера #16
http://www.firststeps.ru/mfc/msdn/r.php?114
Вот это
22h 4 biSizeIm Размер изображения в байтах
и это
12h 4 biWidth Ширина Bitmap-а в пикселях
16h 4 biHeight Высота Bitmap-а в пикселях

Добавлено через 3 минуты
Цитата Сообщение от Eagle123 Посмотреть сообщение
Еще нашел, что надо учитывать кол-во байтов на пиксель..Это так?
ну очень просто если у тебя 24 битное изображение
то считываешь
1 байт красный
2 байт зеленый
3 байт синий
4 зарезервирован
т.е на одну точку считывать нужно 4 байта
если 256 цветов то на одну точку 1 байт
а если двухцветное изображение то один байт на 8 точек

Добавлено через 44 секунды
вот еще http://c-site.h1.ru/infa/bmp_struct.htm
сноску почитай
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
13.05.2013, 19:40  [ТС]     Переполнение буфера #17
Размер изображения в байтах = 226000, размер в пикселях т.е. h.bih.biHeight * h.bih.biWidth = 900 * 500 = 450000. И по каким размерами тогда составлять массив для цветов и записывать его, по байтам??

Добавлено через 2 минуты
Изображение 16-ти цветное
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
13.05.2013, 19:47  [ТС]     Переполнение буфера #18
Изменил началиный размер изображения ( сделал размеры сторон кратные 4), получилось вот так
Миниатюры
Переполнение буфера  
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
13.05.2013, 19:51  [ТС]     Переполнение буфера #19
Но сразу заметно, что изображение закрашено не полностью, видны какие-то полосы. Поэтому цвета так смешиваются
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
13.05.2013, 20:49     Переполнение буфера #20
Цитата Сообщение от Eagle123 Посмотреть сообщение
Изображение 16-ти цветное
сделай сначала полноцветное изображение (32 бита на пиксел) разберись с ним
или поройся в сети найди готовые библиотеки
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
13.05.2013, 20:56  [ТС]     Переполнение буфера #21
Вот в том то и дело, что нельзя библиотеки использовать сторонние. Надо свой класс создать. Задание вот такое=)
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
13.05.2013, 22:22     Переполнение буфера #22
Цитата Сообщение от Eagle123 Посмотреть сообщение
Вот в том то и дело, что нельзя библиотеки использовать сторонние.
можешь не использовать а только посмотреть
там ничего сложного с точки зрения алгоритма, сложность в приведении
один и тот же байт в зависимости от настройки обозначает разные данные или это цвет или индекс палитра или 4 пиксела
у тебя 16 бит это значит на один пиксель два байта
я сейчас не помню но по моему он так кодируется 16 15 14 13 12 бит синий 11 10 9 8 7 6 зеленый 5 4 3 2 1 красный
это надо в спецификации смотреть
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
14.05.2013, 08:29  [ТС]     Переполнение буфера #23
Все сделал, еще одна проьлема заключалась в том, что я использовал 16-цветное изображение, а надо было 256-цветное. Флаг рисует хорошо, все ровно, без мусора. Вот только еще по заданию нужно перегрузить операторы >> и <<, где << - оператор записи в файл, а >> - чтение из файла. Но в классе так много полей..Да и файл двоичный. Как выполнить перегрузку?=)
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
14.05.2013, 09:58     Переполнение буфера #24
Цитата Сообщение от Eagle123 Посмотреть сообщение
Но в классе так много полей..Да и файл двоичный. Как выполнить перегрузку?=)
у тебя же все реализовано
Цитата Сообщение от Eagle123 Посмотреть сообщение
void BMP::ReadQuad(tagRGBQUAD* RGB, int biSize, char* filename)
..........
BMP BMP::read_BMP_info(char* filename)
может палитру еще надо считывать, создай метод
и создай также методы записи структуры массива
а потом это все объедини
Цитата Сообщение от Eagle123 Посмотреть сообщение
Да и файл двоичный.
ты не поверишь на диске все файлы двоичные
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
14.05.2013, 21:07  [ТС]     Переполнение буфера #25
И все таки немного не догоняю, как..
C++
1
2
3
4
istream& operator >>(istream& is, BMP& h)
{
return is>>     //А что вот тут, не пойму
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
14.05.2013, 21:53     Переполнение буфера #26
Цитата Сообщение от Eagle123 Посмотреть сообщение
//А что вот тут, не пойму
Тут должны быть поля BMP, для которых уже определена операция чтения из потока >>.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2013, 22:14     Переполнение буфера
Еще ссылки по теме:

Переполнение буфера, адрес возврата - C++
Подскажите пожалуйста, где можно найти адрес возврата при переполнении буфера. Visual Studio 2012 windows 8.1

Переполнение буфера и его эксплойты - C++
Добрый вечер) Есть такая прога, которая выглядит следующим образом: #include &lt;cstdio&gt; int checkCredentials() //performs credentials...

Не получается сделать переполнение буфера - C++
Всем привет! Нужно сделать переполнение буфера и подменить адрес функции на другой. Если делаю так: void overflow(char *ptr) {...

Переполнение буфера при поиске WNDDIR - C++
string getWNDdir(){ TCHAR wndbuff; memset(wndbuff,0,sizeof(TCHAR)*sizeof(wndbuff)); string strdir=&quot;&quot;; ...

Найти причины и способы исправления ошибок в коде (переполнение буфера) - C++
Только начали изучать построение классов.Делаю класс MyCat (кот). Компилирование запускается но потом вылазит ошибка о переполнении буфера....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
14.05.2013, 22:14  [ТС]     Переполнение буфера #27
Т.е. все поля, которые содержит класс, всю кучу?
А нельзя ли тут как-то применить функцию. которая уже описана в классе. С её помощью мы прочитываем информацию из заголовка:
C++
1
2
3
4
5
6
7
8
9
10
void BMP::read_BMP_info(char* filename)
{
    fstream f(filename, ios::binary | ios::out | ios::in);
    f.seekg(0, ios::beg);
    f.read((char*)& this->bh,sizeof(bh));
    f.read((char*)& this->bih,sizeof(bih));
    this->ReadQuad(RGBQuad, this->bih.biSize + 14, filename);
    f.close();
    
}
Нельзя её применить в перегрузке оператора? Если можно, то как это можно сделать?=)
Yandex
Объявления
14.05.2013, 22:14     Переполнение буфера
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru