临时变量的坑

复制代码
//class MA; MA *ma = new MA();

class QT {

   fun1()
 {   struct_type info={0};//结构体中包含机器名字,机器属性
     //获取机器名字
     ma->getmachine(&info);
      //使用机器名字
     ma->createmachine(info.name);//内部逻辑是,保存设备名字的“指针”

}

fun2()
{
  ///打开机器
  ma->openmacine(){使用了保存的设备名指针,发现机器名字错乱}
}
}//qt
复制代码

原因:设备信息的info变量是一个临时的,出了这个函数,局部变量的内存就变掉了,所以在你用fun2去使用保存的机器信息指针的时候,指针所指向内存的内容已经不是fun1的时候获取的内容了;

函数内的局部变量存储在栈区,栈区的局部变量,在函数执行完之后自动释放;

posted on   邗影  阅读(75)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2017-04-24 c++实现中的一些注意 事项
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示