Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Похоже выделение памяти того  (Прочитано 6491 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Aleexeey
Постоялец

ru
Offline Offline

« : 06-03-2009 17:47 » 

Доброе всем время суток!

как избавиться от такой ошибки:

Код:
unsigned __int8* Data = new unsigned __int8[12000];
file->read(&Data, 10000);

как только функция (read) прочитает часть файла, все переменные этого класса теряют свои значения,
и выход из функции заканчивается сообщением:

Код:
Run-Time Check Failure #2 - Stack around the variable 'Data' was corrupted.

причем если написать так:
Код:
unsigned __int8 Data[12000];
то все заканчивается в порядке!

Гдето в сети нашел:
Цитата
эта ошибка говорит о том, что в переменную 'Data', расположенную в стеке была произведена несанкционированная запись.

Пробовал переставить переменную (куда выделяю память) в начало функции -
переменные функции сохраняют свои значения, а класс теряется, ну что делать???
Похоже выделенная память стирает другие данные в памяти, а потом обижается, что данные пропали мол, кудато.

Помогите пожалуйста!!
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 06-03-2009 18:03 » 

У тебя Data есть указатель, Зачем ты в тело функции пишеш ссылку на указатель. Покажи как определена функция read. Скорее всего нужно просто передавать указатель.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Aleexeey
Постоялец

ru
Offline Offline

« Ответ #2 : 06-03-2009 18:15 » 

О-о-о! спасибо Finch!!!
Попробовал без указателя, все скомпилировалось и работает все, как нужно!!!
Спасибо, и как я сам не догадался, э-дак с утра маялся  КраснеюУлыбаюсьОтлично
Записан
Aleexeey
Постоялец

ru
Offline Offline

« Ответ #3 : 06-03-2009 18:20 » new

Функция чтения файла у меня реализована так:

Код:
int CReadFile::read(void* buffer, unsigned __int32 size)
{
return (int)fread(buffer, 1, size, File);
}
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines