我有C++代码,我将通过interop机制从C#调用。如何从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;
}
的inputList
没有在C#中的任何地方使用。
我的问题是:
- 在C++代码,我应该设置inputList为NULL?
- 如果我将它设置为NULL,我应该如何最好地设置它以避免错误?我是否应该使用
inputList=0
或inputList=NULL
或inputList=(int*)malloc(0)
? - 如果我不设置它,或者,如果我将它设置错误,会带来什么后果?会出现一些非常难以诊断的错误吗?我担心的是,如果我没有正确设置,一些机器可能会运行代码,其他机器可能不会。当程序停止工作时,它会在很晚之后停止,导致我们很难诊断问题,如
AccessViolationException
。 - 所有的一切,如果我将它设置为
inputList=(int*)malloc(0)
,或者如果我不把它所有,将在不同的地方,程序崩溃以后,在一个非常不可预测和不一致的方式,这取决于机器代码正在运行?
分配一个指向(int*)malloc(0)
的指针会导致不可预知的崩溃?我应该如何正确设置一个未使用的指针?
为什么downvote?现在SO的一个令人讨厌的事情是,人们只是在没有解释或任何改善建议的情况下倒退,这个问题是有效的,尽管如此。 – Graviton