Visual Studio将其视为无效的指针**

时间:2010-07-14 18:18:38

标签: c++ visual-studio-2008 pointers

我的代码发生了一些奇怪的事情。我正在使用一个应该完美工作的库(来自开源Netgen网格器的nglib)。我可以链接并包含所有内容,但我无法使用此库:

我想要使用的对象是Ng_Mesh* mesh = Ng_NewMesh ();

Ng_NewMesh()方法是:

   DLL_HEADER Ng_Mesh * Ng_NewMesh ()
   {
      Mesh * mesh = new Mesh;  
      mesh->AddFaceDescriptor (FaceDescriptor (1, 1, 0, 1));
      return (Ng_Mesh*) (void*) mesh;
   }

当我去当地人时,它被视为void**,指的是*mesh void*。它不是NULL因为我可以为这个对象添加点和其他东西,但是对于某些函数,我得到一个例外:

  

System.AccessViolationException:尝试读取或写入受保护的内存。这通常表明其他记忆已损坏   
  在nglib.Ng_GetPoint(Void** , Int32 , Double* )
  在ForwardModelingPlugin.CustomMeshVol3D.tesselate(CustomMeshVol3D* )

nglib.Ng_GetPoint应该具有作为参数(Ng_Mesh*, Int32, Double*)来解释此异常。

我不知道为什么会发生这种情况。

1 个答案:

答案 0 :(得分:5)

Here它说:

/// Data type for NETGEN mesh
typedef void * Ng_Mesh;

因此Ng_Mesh* mesh;void** mesh;

相同