如何在调用C++;从C#? 我有C++代码,我将通过互操作机制从C语言调用。
<>我的C++代码中,这是我的类结构< /p>如何在调用C++;从C#? 我有C++代码,我将通过互操作机制从C语言调用。,c#,c++,pointers,interop,access-violation,C#,C++,Pointers,Interop,Access Violation,我的C++代码中,这是我的类结构< /p> extern "C" struct __declspec(dllexport) LegList { SimpleList simple_List; int* inputList; }; 这是我的C#代码: 输入列表在C#中的任何地方都没有使用 我的问题是: 在C++代码中,我应该将输入列表设置为null吗? 如果我将它设置为NULL,我应该如何最好地设置它以避免bug?我应该使用inpu
extern "C" struct __declspec(dllexport) LegList
{
SimpleList simple_List;
int* inputList;
};
这是我的C#代码:
输入列表
在C#中的任何地方都没有使用
我的问题是:
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)
为什么要投否决票?SO now的一个恼人之处是,人们只是在没有解释或任何改进建议的情况下否决了投票,尽管如此,这个问题仍然有效且明确。谢谢,这也是我的想法。但是,如果我将它设置为inputList=(int*)malloc(0)
,或者如果我根本没有设置它,程序会在以后以一种非常不可预测和不一致的方式在不同的地方崩溃,这取决于代码运行在哪台机器上?
[StructLayout(LayoutKind.Sequential)]
public struct LegList
{
SimpleList simple_List;
public IntPtr inputList;
}