当调用某函数时,通过传入参数a,得到函数内部输出的内容,这时,参数a是需要一定空间来存储的,有两种情况:
1.空间属于函数外部分配的,即申请非托管空间;
2.空间属于函数内部分配的,即调用函数后自动进行空间分配(个人理解)。
情况一:在外部申请非托管空间
/// <summary>
/// 根据传入string的大小申请非托管空间
/// </summary>
/// <param name="str">传入的字符串</param>
/// <returns></returns>
private static IntPtr MallocInptrToString(string str)
{
byte[] btZero = Encoding.ASCII.GetBytes(str);
//申请非托管空间
IntPtr mPtr = Marshal.AllocHGlobal(btZero.Length + 1);
Marshal.Copy(btZero, 0, mPtr, btZero.Length);
return mPtr;
}
/// <summary>
/// 申请指定长度的非托管空间
/// </summary>
/// <param name="length">长度</param>
/// <returns>&l