To get a trial key
fill out the form below
Team License (standard version)
Enterprise License (extended version)
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Request our prices
New License
License Renewal
--Select currency--
USD
EUR
GBP
RUB
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Message submitted.

Your message has been sent. We will email you at


If you haven't received our response, please do the following:
check your Spam/Junk folder and click the "Not Spam" button for our message.
This way, you won't miss messages from our team in the future.

>
>
>
V675. Writing into the read-only memory.
Analyzer Diagnostics
General Analysis (C++)
General Analysis (C#)
General Analysis (Java)
Diagnosis of micro-optimizations (C++)
Diagnosis of 64-bit errors (Viva64, C++)
MISRA errors
AUTOSAR errors
Additional information
Contents

V675. Writing into the read-only memory.

Aug. 12, 2013

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

Have a look at the following sample:

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.

This is the fixed code:

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.

This diagnostic is classified as:

  • CERT-ENV30-C
  • CERT-STR30-C

You can look at examples of errors detected by the V675 diagnostic.

This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site.
Learn More →
Accept