Skip to main content

Modify String

Question Text

What happens if we introduce the code cp[2] = 't' in the program located in the chapters/data/working-with-memory/drills/tasks/memory-access/mem_access.c file?

Question Answers

  • Compile time error because we are trying to modify a const pointer.

  • Compile time error because we are trying to modify a const value.

  • Segmentation fault at runtime we are trying to modify read-only memory.
  • Program compiles and runs successfully.

Feedback

The declaration char *const cp = "ConstLeString" actually defines 2 memory locations. One stores a constant pointer, cp, whereas the other stores the actual string. The compiler thinks that cp is able to modify the memory location that it points therefore it passes compilation. But at runtime a segmentation fault is issued because we are accessing data that is stored in read-only memory.