gpt4 book ai didi

c++ - Visual Studio 将指针视为空值**

转载 作者:行者123 更新时间:2023-11-30 01:31:19 28 4
gpt4 key购买 nike

我的代码发生了一些奇怪的事情。我正在使用一个应该可以完美运行的库(来自开源 Netgen mesher 的 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: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

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

nglib.Ng_GetPoint 应该有作为参数的 (Ng_Mesh*, Int32, Double*) 这解释了这个异常。

我不知道为什么会发生这种转换。

最佳答案

Here它说:

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

因此 Ng_Mesh* mesh; 等同于 void** mesh;

关于c++ - Visual Studio 将指针视为空值**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249150/

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