临时变量的坑

//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 2022-04-24 17:25  邗影  阅读(73)  评论(0编辑  收藏  举报

导航