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

cco*_*ote 1 c++ pointers visual-studio-2008

我的代码发生了一些奇怪的事情.我正在使用一个应该完美工作的库(来自开源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;
   }
Run Code Online (Sandbox Code Playgroud)

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

System.AccessViolationException: 尝试读取或写入受保护的内存.这通常表明其他内存已损坏.

at nglib.Ng_GetPoint(Void** , Int32 , Double* )
atForwardModelingPlugin.CustomMeshVol3D.tesselate(CustomMeshVol3D* )

nglib.Ng_GetPoint应该有作为(Ng_Mesh*, Int32, Double*)解释这个例外的参数.

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

Eug*_*nca 5

这里说:

/// Data type for NETGEN mesh
typedef void * Ng_Mesh;
Run Code Online (Sandbox Code Playgroud)

因此 Ng_Mesh* mesh;是一样的void** mesh;