c写的程序要返回一个char*c#调用的时候应该用什么来接受呢   char*的长度未知
stringbuild?  我返回的长度有20mb左右   为什么我用stringbulid接受只有4个自己长度   感觉就是个指针的长度---------另一个问题的分割线-------------------
另外一种方法是返回一个struct  结构中包括char*和char*的长度两个变量但是c#接收结构的时候 说是类型不匹配  返回错误  
未处理MarshalDirectiveException
方法的类型签名与 PInvoke 不兼容
-------------------同一个问题另外一种方法的分割线-------------------
另外一种方法我用intptr接受
public struct CDecodeFileInfo
{
public long len;
public string data;
};CDecodeFileInfo cdfi = new CDecodeFileInfo();
IntPtr ptr = CReadFile(@"c:\des");
cdfi = (CDecodeFileInfo)Marshal.PtrToStructure(ptr, typeof(CDecodeFileInfo));
返回的错误是
未处理AccessViolationException
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

求任意一种解决方法