Marshal.DestroyStructure Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| DestroyStructure(IntPtr, Type) |
Устаревшие..
Освобождает все подструктуры, на которые указывает указанный неуправляемый блок памяти. |
| DestroyStructure<T>(IntPtr) |
Освобождает все подструктуры указанного типа, на которые указывает указанный неуправляемый блок памяти. |
DestroyStructure(IntPtr, Type)
- Исходный код:
- Marshal.CoreCLR.cs
- Исходный код:
- Marshal.CoreCLR.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.CoreCLR.cs
Внимание
DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296520
Освобождает все подструктуры, на которые указывает указанный неуправляемый блок памяти.
public:
static void DestroyStructure(IntPtr ptr, Type ^ structuretype);
[System.Obsolete("DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296520")]
[System.Security.SecurityCritical]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available. Use the DestroyStructure<T> overload instead.")]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Security.SecurityCritical]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Runtime.InteropServices.ComVisible(true)]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(true)]
public static void DestroyStructure(IntPtr ptr, Type structuretype);
[<System.Obsolete("DestroyStructure(IntPtr, Type) may be unavailable in future releases. Instead, use DestroyStructure<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296520")>]
[<System.Security.SecurityCritical>]
static member DestroyStructure : nativeint * Type -> unit
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available. Use the DestroyStructure<T> overload instead.")>]
static member DestroyStructure : nativeint * Type -> unit
static member DestroyStructure : nativeint * Type -> unit
[<System.Security.SecurityCritical>]
static member DestroyStructure : nativeint * Type -> unit
[<System.Runtime.InteropServices.ComVisible(true)>]
static member DestroyStructure : nativeint * Type -> unit
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(true)>]
static member DestroyStructure : nativeint * Type -> unit
Public Shared Sub DestroyStructure (ptr As IntPtr, structuretype As Type)
Параметры
- ptr
-
IntPtr
nativeint
Указатель на неуправляемый блок памяти.
- structuretype
- Type
Тип отформатированного класса. Это предоставляет сведения о макете, необходимые для удаления буфера в параметре ptr .
- Атрибуты
Исключения
structuretype имеет автоматический макет. Вместо этого используйте последовательные или явные.
Комментарии
Этот метод можно использовать для освобождения полей ссылочного типа, таких как строки, неуправляемой структуры. В отличие от полей, структура может быть типом значений или ссылочным типом. Структуры типа значений, содержащие поля типа значений (все значения) не имеют ссылок, память которых должна быть освобождена. Этот Marshal.StructureToPtr метод используется для предотвращения утечки памяти при повторном использовании памяти, занятой структурой.
DestroyStructure вызывает функцию COM SysFreeString , которая, в свою очередь, освобождает выделенную строку.
Кроме того DestroyStructure, Marshal класс предоставляет два других метода размещения памяти: FreeCoTaskMem и FreeHGlobal.
См. также раздел
Применяется к
DestroyStructure<T>(IntPtr)
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
Освобождает все подструктуры указанного типа, на которые указывает указанный неуправляемый блок памяти.
public:
generic <typename T>
static void DestroyStructure(IntPtr ptr);
[System.Security.SecurityCritical]
public static void DestroyStructure<T>(IntPtr ptr);
public static void DestroyStructure<T>(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member DestroyStructure : nativeint -> unit
static member DestroyStructure : nativeint -> unit
Public Shared Sub DestroyStructure(Of T) (ptr As IntPtr)
Параметры типа
- T
Тип форматируемой структуры. Это предоставляет сведения о макете, необходимые для удаления буфера в параметре ptr .
Параметры
- ptr
-
IntPtr
nativeint
Указатель на неуправляемый блок памяти.
- Атрибуты
Исключения
T имеет автоматический макет. Вместо этого используйте последовательные или явные.
Комментарии
Этот метод можно использовать для освобождения полей ссылочного типа, таких как строки, неуправляемой структуры. В отличие от полей, структура может быть типом значений или ссылочным типом. Структуры типов значений, содержащие поля типа значений (все значения) не имеют ссылок, память которых должна быть освобождена. Этот Marshal.StructureToPtr метод используется для предотвращения утечки памяти при повторном использовании памяти, занятой структурой.
DestroyStructure вызывает функцию COM SysFreeString , которая, в свою очередь, освобождает выделенную строку.