c++ - Why increment on data pointed by Pointer crashing? -



c++ - Why increment on data pointed by Pointer crashing? -

possible duplicate: c/c++ char pointer crash

char *p = "atl"; char c; c = ++*p; //crashing here

why crashing?

i know memory not created pointer increment should have done on data.

p points const info string literal "atl"; means, *p cannot changed. you're trying alter writing ++*p. why crashing @ runtime.

in fact, compilers give warning when write char *p ="atl". should write:

const char *p ="atl";

if write so, compiler give error when write ++*p @ compilation time itself. detection of error @ compile time improve detection of error @ runtime. see compilation error here now:

http://www.ideone.com/fvbpx

the compilation error is:

prog.cpp:7: error: increment of read-only location ‘* p’

however, if write

char p[] = "atl"; char c = ++*p; //ok

then right now. because p array created out of string literal "atl". doesn't point string literal itself anymore. can alter content of array.

c++ visual-c++

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

intellij idea - Update external libraries with intelij and java -

javascript - send data from a new window to previous window in php -