我有一个小错误让我大吃一惊。也许这很简单,但我完全迷失了。
我有一个基本的 POD struct
:
struct Data{
bool isInvalid=false;
vec3 *vector; //vec3 is another struct with x,y,z components
Node*node;
bool isFresh;
unsigned int *form;
};
我有一个功能:
Data getData(){
Data forReturn;
//...populates the forReturn struct
cout<<forReturn.vector->x; //logs correctly a value
return forReturn;
}
cout
日志正确显示我的退货已Data
被填充。但是当我从另一个函数调用这个函数时,就会出现不同的情况:
Data newData=getData(); //logs as above
cout<<newData.vector->x; //is empty!!
这里发生了什么?!我的日志输出并排显示这两行,因为它们紧随其后,但是发生了什么?这不是多线程的,所以变量和指针不应该在这两行之间改变!