我有C++代码,我将通过互操作机制从C#调用该代码。
在我的C++代码中,这是我的类结构
extern "C" struct __declspec(dllexport) LegList
{
SimpleList simple_List;
int* inputList;
};
这是我的C#代码:
[StructLayout(LayoutKind.Sequential)]
public struct LegList
{
SimpleList simple_List;
public IntPtr inputList;
}
在C#中的任何地方都没有使用
inputList
。我的问题是:
inputList=0
还是inputList=NULL
或inputList=(int*)malloc(0)
? AccessViolationException
。 inputList=(int*)malloc(0)
,或者如果我根本未设置,则程序稍后会以非常无法预测和不一致的方式在另一个位置崩溃,具体取决于代码是哪台计算机正在运行? 将指针分配给
(int*)malloc(0)
会导致不可预测的崩溃吗?如何正确设置未使用的指针? 最佳答案
只需将其设置为NULL
即可,如果您的编译器支持,则将其设置为nullptr
即可。这清楚表明它没有指向任何有用的东西。
因此,inputList=NULL
或inputList=nullptr
。
显然,根本不设置它是最糟糕的事情。如果有任何使用它的代码,它将无法预期地运行。
我不确定为什么要这么做inputList=(int*)malloc(0)
。
关于c# - 从C#调用C++时如何最好地处理未使用的指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29647688/