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

Нарушение прав доступа при записи - C++

Восстановить пароль Регистрация
 
danilchyk
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 12
18.09.2012, 00:16     Нарушение прав доступа при записи #1
Привет всем! Извините за тупизм но у меня проблема.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
void f(char* str)
{
    int length = strlen(str);
 
    for (int i = 0; i < length; i++)
        if (i % 2 == 0)
            str[i] = '+';
}
 
int main()
{
    char* s = new char[255];
    s = "just a string";
 
    f(s);
 
    cout << s << endl;
    
    system("pause");
    return 0;
}
В 10 строке выбивает ошибку типа "Нарушение прав доступа при записи". Хоть убей не могу понять почему.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 00:16     Нарушение прав доступа при записи
Посмотрите здесь:

C++ Нарушение прав доступа при записи
Нарушение прав доступа при записи C++
C++ Нарушение прав доступа при записи
C++ Нарушение прав доступа при записи
C++ Нарушение прав доступа при записи
C++ Нарушение прав доступа при записи
C++ Нарушение прав доступа при записи по адресу
Нарушение прав доступа при записи C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.09.2012, 00:24     Нарушение прав доступа при записи #2
в 16 строке s начинает указывать на константную строку, которую изменять нельзя.
по идее не должно было компилится, т.к. указатель на константную строку нельзя присваивать указателю на неконстантную. где-то на форуме даже тема была о том, что такой код компилится.
вот это ошибка вроде бы:
C++
1
2
char* s = 0;
s = "dsffsfsfsf";
но раз скомпилилось, это еще не значит что будет работать. попытка модификации строки через этот указатель приводит к тому, что пытаются изменить то, что есть константа. вот в 10 строке как раз это и происходит.

C++
1
2
3
4
//вместо
s = "just a string";
//в этом случае нужно
strcpy(s, "just a string");
danilchyk
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 12
18.09.2012, 09:18  [ТС]     Нарушение прав доступа при записи #3
Спасибо за подробное описание Следующий раз буду внимательнее.
Yandex
Объявления
18.09.2012, 09:18     Нарушение прав доступа при записи
Ответ Создать тему
Опции темы

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