Provides a collection of methods for allocating unmanaged memory, copying unmanaged memory blocks, and converting managed to unmanaged types, as well as other miscellaneous methods used when interacting with unmanaged code.
See Also: Marshal Members
The static methods defined on the System.Runtime.InteropServices.Marshal class are essential to working with unmanaged code. Most methods defined in this class are typically used by developers who want to provide a bridge between the managed and unmanaged programming models. For example, the Marshal.StringToHGlobalAnsi(string) method copies ANSI characters from a specified string (in the managed heap) to a buffer in the unmanaged heap. It also allocates the target heap of the right size.
The common language runtime provides specific marshaling capabilities. For details on marshaling behavior, see Interop Marshaling.
The Read and Write methods in the System.Runtime.InteropServices.Marshal class support both aligned and unaligned access.