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

Access violation writing exeption - C++

Восстановить пароль Регистрация
 
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
04.05.2011, 12:42     Access violation writing exeption #1
Добрый день! Почему такой код вызывает Access violation writing exeption ?
C++
1
2
3
char *str = "Hello";
    char *p = str;
    *p = 'W';
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
04.05.2011, 12:53     Access violation writing exeption #2
Цитата Сообщение от OMGHero Посмотреть сообщение
Добрый день! Почему такой код вызывает Access violation writing exeption ?
C++
1
2
3
char *str = "Hello"; // Это константа!
char *p = str; // Тоже самое..
*p = 'W'; // Попытка изменить константу
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
04.05.2011, 13:06  [ТС]     Access violation writing exeption #3
str не константа, можно явно проверить и увеличить на 1.
*str - константа? почему?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.05.2011, 13:08     Access violation writing exeption #4
OMGHero, Потому что компилятор кладет эту строку в константную область памяти. Именно поэтому лучше не пытаться наколоть кого-то, а писать
C++
1
const char* str = "Hello"
.
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
04.05.2011, 13:20  [ТС]     Access violation writing exeption #5
а как сделать так что бы комплятор поместил это не в константную область памяти?
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
04.05.2011, 13:26     Access violation writing exeption #6
C++
1
2
3
char str[] = "Hello";
str[0] = 'W';
*str = 'H';
Yandex
Объявления
04.05.2011, 13:26     Access violation writing exeption
Ответ Создать тему
Опции темы

Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru