Marshal::DestroyStructure Method (IntPtr, Type^)
Frees all substructures that the specified unmanaged memory block points to.
Assembly: mscorlib (in mscorlib.dll)
public: [SecurityCriticalAttribute] [ComVisibleAttribute(true)] static void DestroyStructure( IntPtr ptr, Type^ structuretype )
Parameters
- ptr
-
Type:
System::IntPtr
A pointer to an unmanaged block of memory.
- structuretype
-
Type:
System::Type^
Type of a formatted class. This provides the layout information necessary to delete the buffer in the ptr parameter.
| Exception | Condition |
|---|---|
| ArgumentException | structureType has an automatic layout. Use sequential or explicit instead. |
You can use this method to free reference-type fields, such as strings, of an unmanaged structure. Unlike its fields, a structure can be a value type or a reference type. Value-type structures that contain value-type fields (all blittable) have no references whose memory must be freed. The Marshal::StructureToPtr method uses this method to prevent memory leaks when reusing memory occupied by a structure.
DestroyStructure calls the COM SysFreeString function, which, in turn, frees an allocated string.
In addition to DestroyStructure, the Marshal class provides two other memory-deallocation methods: FreeCoTaskMem and FreeHGlobal.
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1