Marshal::PtrToStringAuto Method (IntPtr)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Allocates a managed String and copies all characters up to the first null character from a string stored in unmanaged memory into it.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

static String^ PtrToStringAuto(
	IntPtr ptr


Type: System::IntPtr

For Unicode platforms, the address of the first Unicode character.


For ANSI plaforms, the address of the first ANSI character.

Return Value

Type: System::String^

A managed string that holds a copy of the unmanaged string if the value of the ptr parameter is not null; otherwise, this method returns null.

If the current platform is Unicode, each ANSI character is widened to a Unicode character and this method calls PtrToStringUni. Otherwise, this method calls PtrToStringAnsi.

PtrToStringAuto is useful for custom marshaling or when mixing managed and unmanaged code. Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. PtrToStringAuto provides the opposite functionality of the Marshal::StringToCoTaskMemAuto and Marshal::StringToHGlobalAuto methods.


requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

.NET Framework
Available since 1.1
Return to top