静态指向内存的位置

1 c pointers

我读到malloc()和calloc()传递的指针从堆中动态分配内存.

char *Name="Ann";
Run Code Online (Sandbox Code Playgroud)
  1. 在这种情况下,静态字符串{'A','n','n','\ 0'}是否也存储在堆中?
  2. 我可以使用指针修改字符串吗?

Jer*_*fin 7

  1. 不,字符串是静态分配的.(C99,§6.4.5/ 5)
  2. 尝试修改字符串文字会产生未定义的行为.(§6.4.5/ 6)