Marshal::SizeOf<T> Method (T)


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

[Supported in the .NET Framework 4.5.1 and later versions]

Returns the unmanaged size of an object of a specified type in bytes.

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

generic<typename T>
static int SizeOf(
	T structure


Type: T

The object whose size is to be returned.

Return Value

Type: System::Int32

The size, in bytes, of the specified object in unmanaged code.

Type Parameters


The type of the structure parameter.

Exception Condition

The structure parameter is null.

This method accepts an instance of a structure, which can be a reference type or a boxed value type. The layout must be sequential or explicit.

The size returned is the size of the unmanaged object. The unmanaged and managed sizes of an object can differ. For character types, the size is affected by the CharSet value applied to that class.

You can use the SizeOf<T>(T) method to determine how much unmanaged memory to allocate by using the AllocHGlobal and AllocCoTaskMem methods.

Universal Windows Platform
Available since 8.1
.NET Framework
Available since 4.5.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1
Return to top