-2

我试图让一个结构中的指针指向另一个类型的结构数组。这是我的代码:

struct Mesh 
{
    long masterRef;                 // The global fragment number
    long polygonCount;              // Number of polygons in the mesh
    long vertexCount;               // Number of verticies in the mesh
    Vertex *verti;                  // Pointer to verticies in the mesh
    Poly *poly;                     // Pointer to polygons in the mesh
    float center[3];                // The center of the mesh
    bool isVisible;                 // Is the mesh currently visible?
} typedef Mesh;

struct Region 
{
    bool hasPoly;
    long size1; 
    long size2;
    long size3;
    long size4;
    long size5;
    long size6;
    Mesh* meshptr; // the mesh with the polygons for this region
    long meshRef;
    std::vector<int> visvector;
    long regionsVisible;
};

如您所见,我正在尝试在 Region 结构中创建一个网格指针。指针将指向网格数组中的一个网格。仅此行会导致程序崩溃,并显示调试断言失败消息和“表达式:无效空指针”

有谁知道是什么问题?我会发布调用代码,但没有它它会崩溃。

4

1 回答 1

2

我认为你的问题是你“试图让一个结构中的指针指向一个结构数组”。要声明指向数组的指针,您需要稍微不同的语法:Mesh (*meshptr)[array_size];. 就你现在的结构而言,meshptr是一个指向单个的指针Mesh对象,而不是数组。尝试像数组一样使用该指针会导致问题,因为您将直接访问指针后面的内存。这可以解释为什么将指针移动到数据结构的末尾似乎有效。当你这样做时,你正在破坏结构后面的内存,而不是破坏指针后面的结构成员。最有可能的是,您的代码损坏了结构的最后三个字段之一,并且该损坏导致了您看到的错误。将指针移到末尾可能会导致错误停止,但并不能解决问题(您仍在破坏内存,这可能会产生许多意想不到的影响)。

这只是基于我过去所做的愚蠢事情的猜测。如果没有更多代码,就无法确定。

于 2011-06-08T00:56:04.383 回答