#include<stdio.h>
struct Node {
int a;
};
struct Node* prepare() {
struct Node node = { 123456 };
return &node;
}
int main() {
struct Node* node = prepare();
printf("%d\n", node->a);
printf("%d\n", node->a);
return 0;
}
以下是结果
那么为什么结果会不一样呢?
prepare
正在返回一个指向内存块的指针,一个在堆栈上分配的局部变量。内存块在返回后会被系统重复使用。当你第二次打印它时,内存块已经被覆盖。