Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
#1

Ошибка Access violation при передаче указателя в функцию - C++

30.10.2015, 00:04. Просмотров 354. Ответов 2
Метки нет (Все метки)

выделяю память для нужд програмных и соханяю его.
C++
1
2
char *resadres =(char*) VirtualAlloc (0, 50000, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
char *wresadres = resadres;
вызываю вот так функцию записи в эту выделенную память.
и все работает нормально. в ней я НЕ изменяю resadres.

C++
1
2
3
4
crresult(stp1, pcnds, &wpcnds, resadres, &wresadres, fname);
//вот ее объявление
void crresult(statep &stp1, char *pcnds, char **wpcnds, char *resadres, char **wresadres, char *fname)
{}
после этого я вызываю еще одну функцию она записывает из выделенной памяти данные в файл
C++
1
2
3
4
writecrresbuffer(resadres, &wresadres, fname);
//вот ее объявление
void writecrresbuffer(char *resadres, char **wresadres, char *fname)
{}
у меня в функции writecrresbuffer() в отладчике Visualstudio при проверке веделенной памяти на появление символа
появляется ошибка.
First-chance exception at 0x00C930B9 in testprojce.exe: 0xC0000005: Access violation reading location 0xCCCCCCCC.
If there is a handler for this exception, the program may be safely continued.
я начал проверять с начала веделенной памяти и почти сразу появилась это ошибка на 5-10 итерации, я нигде не менял указатель resadres и он всегда указаывает наначало выделенной памяти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2015, 00:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка Access violation при передаче указателя в функцию (C++):

exception : 0xC0000005: Access Violation - C++
Разработка идет по windows mobile 6. Возникла необходимость в определенном случае менять данные в памяти по адресу 0x02020000 cо смещение...

0xC0000005: Access violation writing location - C++
Пытаюсь запустить стороннее приложение таким кодом: PROCESS_INFORMATION P_I; STARTUPINFO S_I; ZeroMemory(&S_I, sizeof(S_I)); ...

После сборки в Release краш с Access Violation - C++
Имеется Dll, собранная в Release /MT. На Win8 все прекрасно работает, а на 7ке крашится с исключением c0000005. Причем если запускать в...

Передача типа указателя на функцию - C++
Всем привет. Недавно в теме начинающих возник вопрос, а можно ли передать тип (указатель на функцию) без использования typedef: ...

Передача указателя на функцию-член - C++
Всем привет ! Необходимо передать функцию-член в качестве параметра другой функции-члену. Следующий код class Menu { ...

Шаблон RAII замены указателя на функцию - C++
шаблон raii замены указателя на фукнцию допустим имеется набор указателей на функции разных типов и существует потребность временно,...

2
nmcf
5535 / 4845 / 1642
Регистрация: 14.04.2014
Сообщений: 19,657
30.10.2015, 06:58 #2
Может за границу области выходишь? А для чего wresadres и почему VirtualAlloc()?
0
korez
8 / 8 / 0
Регистрация: 22.02.2011
Сообщений: 182
30.10.2015, 12:25  [ТС] #3
nmcf, нет в том то и дело что не выхожу, нигде не меняю указатель он всегда указывает на выделенный буфер памяти на его начало если точно.
Цитата Сообщение от nmcf Посмотреть сообщение
А для чего wresadres
wresadres это для сохранения указателя resadres, вот как выглядит этот код.
C++
1
2
3
*wresadres = resadres;
while(**wresadres!='\0')
{   *wresadres++; i++; }
и где то на 5 итерации происходит эта ошибка, еще очень далеко до конца выделенно фрагмента.

Добавлено через 5 минут
Цитата Сообщение от nmcf Посмотреть сообщение
почему VirtualAlloc()
использовал функцию malloc(); результат тот же.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2015, 12:25
Привет! Вот еще темы с ответами:

Ошибка при добавлении TSeries: Access Violation - C++ Builder
Здравствуйте, помогите разобраться с ошибкой: void __fastcall TForm1::MyEvent(TObject *Sender) { TIniFile *ini=new...

Ошибка Access Violation при использовании vector внутри класса - C++ Builder
Проблема в следующем: имеется пользовательский класс. Три поля в классе - векторы, один из которых двумерный. Первое создание экземпляра...

Ошибка при компилировании исправной программы: Access violation at address 501F084A in module 'vcl120.bpl' - C++ Builder
Взываю ко всем умам форума!(( Недавно я здесь создавал тему про ошибку, возникающую при компилировании исправной программы. А ошибка такая:...

При попытке присвоить полям новой структуры значений типа AnsiString появляется ошибка Access Violation - C++ Builder
При попытке присвоить полям новой структуры значений типа AnsiString появляется ошибка. Как я понимаю это связано с памятью, но не пойму в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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