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

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

Войти
Регистрация
Восстановить пароль
 
Хрисипп
18 / 28 / 8
Регистрация: 09.02.2016
Сообщений: 216
#1

Почему при изменении литерала const char* программа падает? - C++

26.08.2016, 14:06. Просмотров 187. Ответов 8
Метки нет (Все метки)

точнее литерала. ладно, если бы выходил за пределы
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2016, 14:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему при изменении литерала const char* программа падает? (C++):

Почему программа падает при сортировке массивов больших размерностей - C++
Добрый день! Подскажите почему прога крашится при размере массива 10000, при значении 1000 все прекрасно работает. #include <iostream> ...

Чем отличаются объявления const char* и const* char - C++
Прошу объяснить мне, чем отличаются объявления const char* и const* char и как объявить: указатель на константный массив символов, ...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include <iostream> template<typename T> inline const T...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

const char не инициализируется при объявлении - C++
Доброго времени суток. Прошу помощи есть код std::string f = "бла-бла-бла"; ... const char* filename = f.c_str(); в режиме...

Почему падает программа? - C++
Почему падает программа? Компилируется без ошибок, но при запуске аварийное завершение работы. #include <iostream> #include <stdlib.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
26.08.2016, 14:09 #2
Где код?
0
Babysitter
80 / 107 / 35
Регистрация: 23.11.2015
Сообщений: 332
Завершенные тесты: 1
26.08.2016, 14:09 #3
а вот так не падает, странно, да?
C++
1
2
3
    char tmp[] = "hello";
    const char *x = tmp;
    tmp[0] = 'H';
0
HighPredator
5542 / 1848 / 345
Регистрация: 10.12.2010
Сообщений: 5,455
Записей в блоге: 2
26.08.2016, 14:09 #4
Код в студию
0
HelicopterK52
660 / 203 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
26.08.2016, 14:11 #5
Цитата Сообщение от Хрисипп Посмотреть сообщение
точнее литерала.
Например, потому что литерал может быть сохранен в read-only памяти?
И вообще, если оно константно, то не нужно его менять.
0
Babysitter
80 / 107 / 35
Регистрация: 23.11.2015
Сообщений: 332
Завершенные тесты: 1
26.08.2016, 14:13 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
распространенные ошибки
1
Хрисипп
18 / 28 / 8
Регистрация: 09.02.2016
Сообщений: 216
26.08.2016, 14:18  [ТС] #7
Цитата Сообщение от HighPredator Посмотреть сообщение
Код в студию
Цитата Сообщение от John Prick Посмотреть сообщение
Где код?
C++
1
2
3
4
5
6
7
char* e(char* v){
    v[0]='a';
    return v;
}
int main(){
    cout<<e("12");
}
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Например, потому что литерал может быть сохранен в read-only памяти?
я вот про это и подумал
0
HelicopterK52
660 / 203 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
26.08.2016, 15:19 #8
Хрисипп, в Вашем коде также есть небольшая "какашка" - у Вас на литерал "указывает" не константный указатель. Такое преобразование не валидно для C++.
0
Хрисипп
18 / 28 / 8
Регистрация: 09.02.2016
Сообщений: 216
26.08.2016, 15:29  [ТС] #9
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
у Вас на литерал "указывает" не константный указатель
да я такими вещами не занимаюсь. просто сейчас вспомнил про это и решил точно выяснить
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2016, 15:29
Привет! Вот еще темы с ответами:

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *' - C++
Unit1.cpp(59): E2034 Cannot convert 'char const' to 'const wchar_t *' Full parser context Unit1.cpp(55): parsing: void _fastcall...

Cannot convert 'const wchar_t *' to 'const char *' - C++
HMODULE hMod=GetModuleHandle(NULL); if(!hMod) { } HRSRC hRes=FindResource(hMod,&quot;acc.dll&quot;,RT_RCDATA); if(!hRes){ } HGLOBAL...

Динамический массив нулевого размера. Почему не падает программа? - C++
char* p = new char; cout &lt;&lt; &amp;p &lt;&lt; endl; Странно, но всё работает. Хотя если зададим отрицательный размер массива char* p = new char;...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.08.2016, 15:29
Ответ Создать тему
Опции темы

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