public static void Main()
{
string stringA = "I seem to be turned around";
int copylen = stringA.Length;
IntPtr sptr = Marshal.StringToHGlobalAnsi(stringA);
IntPtr dptr = Marshal.AllocHGlobal(copylen + 1);
//The unsafe section where byte pointers are used.
unsafe
{
byte * src = (byte * )sptr.ToPointer();
byte * dst = (byte * )dptr.ToPointer();
while (copylen > 0)
{
src += copylen - 1;
while (copylen-- > 0)
{
*dst++ = *src--;
}
*dst = 0;
}
}
string stringB = Marshal.PtrToStringAnsi(dptr);
Console.WriteLine("Original:\n{0}\n", stringA);
Console.WriteLine("Reversed:\n{0}", stringB);
Marshal.FreeHGlobal(sptr);
Marshal.FreeHGlobal(dptr);
C#中的unsafe代码
最新推荐文章于 2023-04-04 21:53:01 发布