程序运行后
栈区:
由编译器自动分配释放,存放函数的参数值,局部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

#include<iostream>
#include<string>
using namespace std;


int* func() {

	int a = 10;   //局部变量放在栈区,方法执行完毕自动释放内存
	return &a;    //返回局部变量地址

}

int main() {

	int * p = func();
	cout << *p << endl;  //第一次可以打印正确的数字,是因为编译器做了保留
	cout << *p << endl;  //第二次这个数据就不再保留了

	system("pause");

}

总结:第一次可以打印正确的数字,是因为编译器做了保留 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐