Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 02.01.2015
Сообщений: 39
1

Исключение access violation writing location

24.02.2015, 13:25. Показов 1197. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал код (C++ && WinApi, Visual Studio 2015 Preview):

C++
1
2
wchar_t* GameText1
_itow(GetRandomNumber(), GameText1, 10);
GetRandomNumber() - это функция, которая возвращает случайное число в формате int.


Но компилятор кинул исключение:

Unhandled exception at 0x000C03DE in Game.exe: 0xC0000005: Access violation writing location 0x00000000.

Это переводится примерно так:

Необработанное исключение на 0x000C03DE в Game.exe: 0xC0000005: нарушение прав доступа записи по адресу 0x00000000.

Что делать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2015, 13:25
Ответы с готовыми решениями:

Исключение Access violation writing location 0x0582D000
При попытке запустить программу на других ПК возникает исключение "Access violation writing...

Access violation writing location
#include <iostream> using namespace std; template < typename t > void QuickSort( t array, int...

Access violation writing location
Вылетает эта ошибка. В чём может быть проблема? Программа выполняется выводит результат, а после...

Access violation writing location
Добрый день! на строке ptr = ptr; бросает unhandeled exeption: Access violation writing...

6
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
24.02.2015, 13:46 2
Цитата Сообщение от T_P_A_K_T_O_P Посмотреть сообщение
wchar_t* GameText1
Куда же указывает этот волшебный указатель?
Цитата Сообщение от T_P_A_K_T_O_P Посмотреть сообщение
_itow
Куда же тогда будет записывать результат itow?
0
3 / 3 / 0
Регистрация: 02.01.2015
Сообщений: 39
24.02.2015, 13:49  [ТС] 3
wchar_t* GameText1 - это строка (массив wchar_t).

_itow по-идее должен записывать результат в GameText1.
0
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
24.02.2015, 13:53 4
Цитата Сообщение от T_P_A_K_T_O_P Посмотреть сообщение
wchar_t* GameText1 - это строка (массив wchar_t).
Это не строка, это просто указатель.
Цитата Сообщение от T_P_A_K_T_O_P Посмотреть сообщение
_itow по-идее должен записывать результат в GameText1.
GameText1 - указатель. Переменная, которая хранит адрес. "_itow по-идее должен записывать" по адресу из GameText1. Вопрос повторяется: куда же указывает этот указатель?

Добавлено через 45 секунд
Цитата Сообщение от Velesthau Посмотреть сообщение
массив wchar_t
И тем более, нигде не указано, что это массив. Это не массив.
0
158 / 148 / 25
Регистрация: 23.01.2011
Сообщений: 319
24.02.2015, 13:54 5
Это не компилятор кинул исключение, а уже в процессе работы программы возникло SEH исключение. Оно говорит о том, что происходит попытка записи по адресу 0x00000000 (нулевому указателю).
Здесь происходит попытка писать в GameText1 которая не инициализирована.
GameText1 это только указатель на буфер типа wchar_t, но память под него не выделена.
Нужно выделить память. Проще всего сделать так:
C
1
2
wchar_t GameText1[11];
_itow(GetRandomNumber(), GameText1, 10);
0
3 / 3 / 0
Регистрация: 02.01.2015
Сообщений: 39
24.02.2015, 13:55  [ТС] 6
Velesthau,

Вы правы... Тогда я должен написать:

C++
1
wchar_t GameText1[100] = { 0 };
Вот вроде-бы изучил c++, а постоянно забываю элементарные правила. Спасибо.
0
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
24.02.2015, 13:56 7
Цитата Сообщение от T_P_A_K_T_O_P Посмотреть сообщение
wchar_t GameText1[100] = { 0 };
Да, можно так
Цитата Сообщение от T_P_A_K_T_O_P Посмотреть сообщение
Вот вроде-бы изучил c++, а постоянно забываю элементарные правила. Спасибо.
Бывает
0
24.02.2015, 13:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2015, 13:56
Помогаю со студенческими работами здесь

Ошибка Access violation writing location
Структура и объявление массива: struct Particle { float X; float Y; float Dx; float Dy;...

0xC0000005: Access violation writing location
Пытаюсь запустить стороннее приложение таким кодом: PROCESS_INFORMATION P_I; STARTUPINFO S_I; ...

__asm ошибка Access violation writing location
Код ниже выводит следующую ошибку "Unhandled exception at 0x004116a7 in cousach.exe: 0xC0000005:...

0xC0000005: Access violation writing location 0xFDFDFE11
ошибка, вылетает после запуска программы. Exception thrown at 0x013E1C0A in массивы.exe:...

Код выдает ошибку Access violation writing location
#include<stdio.h> #include<string.h> #include<locale.h> int main() { setlocale(LC_CTYPE,...

Unhandled exception at 0x0F73DF62 | 0xC0000005: Access violation writing location
Многоуважаемые форумчане, необходима небольшая консультация по следующему коду: ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru