gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:57:19 26 4
gpt4 key购买 nike

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

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

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

Item * arr[3];

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

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

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

关于c++ - 尝试访问数组时数据从数组中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com