请考虑以下代码:
char* pointerTesting(void) {
char* test = "hello";
return test;
}
int main() {
char* string = pointerTesting();
printf("string: %s\n", string);
}
这段代码在编译和运行时没有问题。但是,在我看来,这应该无法正常工作,因为指向 test
指针的内存位于堆栈中,并且返回到主函数时会被销毁。
那么问题来了,为什么在 pointerTesting() 函数中没有使用 malloc,也能够正常工作呢?
int n = 42; return n;
。重要的是它所指向的内容的分配。 - Keith Thompson