gpt4 book ai didi

c++ - 推回 vector 指针时如何解决读取访问冲突

转载 作者:行者123 更新时间:2023-12-02 09:53:55 25 4
gpt4 key购买 nike

尝试将vec3指针推到 vector 时出现读取访问冲突错误。以下是我的代码和错误消息:

struct Mesh_Data
{
std::vector <glm::vec3*>* vertices;
std::vector<glm::vec3*>* faces;
};

he::Mesh_Data* meshData = new he::Mesh_Data;
glm::vec3* test = glm::vec3(0, 0, 0);
meshData->faces->push_back(test); // program breaks on this line

错误信息:

****抛出异常:读取访问冲突。
_My_data 为0xFFFFFFFFFFFFFFE7。发生****

请问如何解决该问题以及造成此问题的原因(如果您有时间解释一下机械发生的事情,那将是非常好的事情!)

我猜可能是因为新分配的meshData指针尚未初始化。但是在这种情况下,我不确定如何初始化它,我只想向其添加vec3指针。

谢谢。

最佳答案

如果您不使用指针,则代码将起作用。为什么所有指针?

struct Mesh_Data
{
std::vector<glm::vec3> vertices;
std::vector<glm::vec3> faces;
};

he::Mesh_Data meshData;
glm::vec3 test = glm::vec3(0, 0, 0);
meshData.faces.push_back(test);

因为 vector的主要目的是避免处理指针的复杂性,所以指向 vector 的指针根本没有任何意义。指针 vector 有时是有意义的,但是即使那样,通常还是最好使用智能指针而不是“原始”指针。

关于c++ - 推回 vector 指针时如何解决读取访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61981886/

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