所以我在读一些课程代码时对C语言中变量是如何释放的有些困惑。
给定的代码是:
#include<stdio.h>
main () {
int n=0;
char *p = "hello world";
while (*p!= 0) { // *p != '\0';
putc(*p, stdout);
p++;
}
printf("\np = %d", *p);
printf("\np = %d\n", p);
}
所以我知道你不需要为 char* 释放任何内存,因为没有进行malloc分配,但我不明白为什么这段代码不会泄漏内存...如果你对字符串进行指针递增操作,从而将指针移动到下一个内存块(1字节),那么你不是失去了最初的引用和所有被你递增过的引用点吗?如果没有引用点,这段内存怎么能被回收,除非在这种操作发生之前由编译器保存了一个引用点。我希望能在这方面得到一些见解!