//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的时候获取的内容了;
函数内的局部变量存储在栈区,栈区的局部变量,在函数执行完之后自动释放;