尝试访问数组时数据从数组中丢失

Data is lost from an array when trying to access it

我已经声明了一个基本结构如下。

struct Item
{
    MPoint key; //4 element double array x,y,z,w represents a point in space
    Item * next = NULL;
};

我有一小部分指向这些结构的指针

Item * arr[3];

创建项目时,键由其位置定义,该位置是 3D 中的唯一点 space。

Item hti; //create a new item struct called hti
hti.key = transf.rotatePivot(MSpace::kWorld); 
Item * p_hti = &hti; //pointer to the struct
arr[0] = p_hti;

主要问题是当我在调试器中观察 arr[0] 变量时,它显示了正确的键值。但是,一旦我检查了

中的数据
double x = arr[0]->key.x;

我每次都得到 x = -9.2559631349317831e+61 而不是得到正确的 x 值,对于键 (x,y,z) 中的所有其他值。

我假设上面的奇怪值表示未初始化的内存,但在我尝试将值拉回之前,数组如何正确保存值对我来说没有意义。

如有任何帮助,我们将不胜感激!

在你写的例子中:

 Item hti;  // declared on the stack
 // ...
 Item* p_hti = &hti; // points to item on the stack
 arr[0] = p_hti;  // points to item on the stack

您正在导致此数组引用当前堆栈帧中的项目,这些项目在离开此堆栈帧后将未定义(或者如果您执行破坏当前堆栈的操作,这些项​​目可能会被破坏)。您对该数组的取消引用是否发生在同一个函数中?还是在您从初始化它的函数 return "arr" 之后发生?如果是后者,那就可以解释你的问题了……它引用的内存超出了范围。为防止该问题,您应该在初始化数组时使用动态内存分配(使用 new)(您还需要记住在使用相应的 delete 完成后释放它)。