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
: 尝试读取或写入受保护的内存.这通常表明其他内存已损坏.
atnglib.Ng_GetPoint(Void** , Int32 , Double* )
atForwardModelingPlugin.CustomMeshVol3D.tesselate(CustomMeshVol3D* )
nglib.Ng_GetPoint
应该有作为(Ng_Mesh*, Int32, Double*)
解释这个例外的参数.
我不知道为什么会发生这种情况.
这里说:
/// Data type for NETGEN mesh
typedef void * Ng_Mesh;
Run Code Online (Sandbox Code Playgroud)
因此 Ng_Mesh* mesh;
是一样的void** mesh;