, [DllImport] Stdcall, C- Cdecl. CallingConvention .
, , Vista Win7. C , . , . , . malloc() free(). , pinvoke , , C.
Marshal.FreeCoTaskMem(). , CoTaskMemAlloc(). XP , . kaboom Vista Win7, .
C :
extern "C" __declspec(dllexport)
void __stdcall Test(const char* input, char* output, int outLen);
, , , . StringBuilder #.
[DllImport("foo.dll")]
private static extern void Test(string input, StringBuilder output, int outLen);
...
var sb = new StringBuilder(666);
test("bar", sb, sb.Capacity);
string result = sb.ToString();
, outLen C, . , Fatal Execution Engine.