﻿# V675\. Writing into read\-only memory\.

The analyzer has detected an attempt of writing into read\-only memory\.

Have a look at the following sample:

```cpp
char *s = "A_string";
if (x)
  s[0] = 'B';
```

The pointer 's' refers to a memory area which is read\-only\. Changing this area will cause undefined behavior of the program which will most probably take form of an [access violation](https://pvs-studio.com/en/blog/terms/0063/)\.

This is the fixed code:

```cpp
char s[] = "A_string";
if (x)
  s[0] = 'B';
```

The 's' array is created on the stack, and a string from read\-only memory is copied into it\. Now you can safely change the 's' string\.



P\.S\.

If "A\_string" is "const char \*", why should this type be implicitly cast to "char \*"?

This is done due to compatibility reasons\. There exists a TOO large amount of legacy code in C where non\-constant pointers are used, and C\+\+ standard/compiler developers didn't dare to break the backward compatibility with that code\.