Marshal.SizeOf 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
클래스의 관리되지 않는 크기(바이트)를 반환합니다.
오버로드
SizeOf(Object) |
사용되지 않음.
개체의 관리되지 않는 크기(바이트)를 반환합니다. |
SizeOf(Type) |
사용되지 않음.
관리되지 않는 형식의 크기(바이트)를 반환합니다. |
SizeOf<T>() |
관리되지 않는 형식의 크기(바이트)를 반환합니다. |
SizeOf<T>(T) |
지정된 형식의 개체의 관리되지 않은 크기를 반환합니다(바이트 단위). |
SizeOf(Object)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
주의
SizeOf(Object) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514
개체의 관리되지 않는 크기(바이트)를 반환합니다.
public:
static int SizeOf(System::Object ^ structure);
[System.Obsolete("SizeOf(Object) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514")]
public static int SizeOf (object structure);
public static int SizeOf (object structure);
[System.Runtime.InteropServices.ComVisible(true)]
public static int SizeOf (object structure);
[<System.Obsolete("SizeOf(Object) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296514")>]
static member SizeOf : obj -> int
static member SizeOf : obj -> int
[<System.Runtime.InteropServices.ComVisible(true)>]
static member SizeOf : obj -> int
Public Shared Function SizeOf (structure As Object) As Integer
매개 변수
- structure
- Object
크기가 반환되는 개체입니다.
반환
비관리 코드에서 지정된 개체의 크기입니다.
- 특성
예외
structure
매개 변수가 null
인 경우
예제
다음 예제에서는 관리되는 구조를 만들고 관리되지 않는 메모리로 전송한 다음 관리형 메모리로 다시 전송합니다. 이 예제에서는 메서드를 SizeOf 사용하여 할당할 관리되지 않는 메모리의 양을 결정합니다.
using System;
using System.Runtime.InteropServices;
public struct Point
{
public int x;
public int y;
}
class Example
{
static void Main()
{
// Create a point struct.
Point p;
p.x = 1;
p.y = 1;
Console.WriteLine("The value of first point is " + p.x + " and " + p.y + ".");
// Initialize unmanged memory to hold the struct.
IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(p));
try
{
// Copy the struct to unmanaged memory.
Marshal.StructureToPtr(p, pnt, false);
// Create another point.
Point anotherP;
// Set this Point to the value of the
// Point in unmanaged memory.
anotherP = (Point)Marshal.PtrToStructure(pnt, typeof(Point));
Console.WriteLine("The value of new point is " + anotherP.x + " and " + anotherP.y + ".");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Public Structure Point
Public x As Integer
Public y As Integer
End Structure
Module Example
Sub Main()
' Create a point struct.
Dim p As Point
p.x = 1
p.y = 1
Console.WriteLine("The value of first point is " + p.x.ToString + " and " + p.y.ToString + ".")
' Initialize unmanged memory to hold the struct.
Dim pnt As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(p))
Try
' Copy the struct to unmanaged memory.
Marshal.StructureToPtr(p, pnt, False)
' Create another point.
Dim anotherP As Point
' Set this Point to the value of the
' Point in unmanaged memory.
anotherP = CType(Marshal.PtrToStructure(pnt, GetType(Point)), Point)
Console.WriteLine("The value of new point is " + anotherP.x.ToString + " and " + anotherP.y.ToString + ".")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
설명
이 메서드는 참조 형식 또는 박스형 값 형식일 수 있는 구조체의 인스턴스를 허용합니다. 레이아웃은 순차적이거나 명시적이어야 합니다.
반환되는 크기는 관리되지 않는 개체의 크기입니다. 개체의 관리되지 않는 크기와 관리되는 크기는 다를 수 있습니다. 문자 형식의 경우 크기는 해당 클래스에 적용된 값의 CharSet 영향을 받습니다.
메서드를 SizeOf 사용하여 및 AllocCoTaskMem 메서드를 사용하여 할당할 관리되지 않는 메모리의 AllocHGlobal 양을 확인할 수 있습니다.
추가 정보
적용 대상
SizeOf(Type)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
주의
SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296515
관리되지 않는 형식의 크기(바이트)를 반환합니다.
public:
static int SizeOf(Type ^ t);
[System.Obsolete("SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296515")]
public static int SizeOf (Type t);
public static int SizeOf (Type t);
[<System.Obsolete("SizeOf(Type) may be unavailable in future releases. Instead, use SizeOf<T>(). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296515")>]
static member SizeOf : Type -> int
static member SizeOf : Type -> int
Public Shared Function SizeOf (t As Type) As Integer
매개 변수
- t
- Type
크기가 반환되는 형식입니다.
반환
비관리 코드에서 지정된 형식의 크기입니다.
- 특성
예외
t
매개 변수는 제네릭 형식 정의입니다.
t
매개 변수가 null
인 경우
예제
다음 예제에서는 SizeOf 메서드를 호출하는 방법을 보여 줍니다. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 Marshal 클래스입니다.
// Demonstrate the use of the SizeOf method of the Marshal
// class.
Console::WriteLine("Number of bytes needed by a Point object: {0}",
Marshal::SizeOf(Point::typeid));
Point point;
Console::WriteLine("Number of bytes needed by a Point object: {0}",
Marshal::SizeOf(point));
// Demonstrate the use of the SizeOf method of the Marshal class.
Console.WriteLine("Number of bytes needed by a Point object: {0}",
Marshal.SizeOf(typeof(Point)));
Point p = new Point();
Console.WriteLine("Number of bytes needed by a Point object: {0}",
Marshal.SizeOf(p));
' Demonstrate the use of the SizeOf method of the Marshal class.
Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(GetType(Point)))
Dim p As New Point()
Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(p))
설명
구조체가 없는 경우 이 메서드를 사용할 수 있습니다. 레이아웃은 순차적이거나 명시적이어야 합니다.
반환되는 크기는 관리되지 않는 형식의 크기입니다. 개체의 관리되지 않는 크기와 관리되는 크기는 다를 수 있습니다. 문자 형식의 경우 크기는 해당 클래스에 적용된 값의 CharSet 영향을 받습니다.
추가 정보
적용 대상
SizeOf<T>()
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
관리되지 않는 형식의 크기(바이트)를 반환합니다.
public:
generic <typename T>
static int SizeOf();
public static int SizeOf<T> ();
static member SizeOf : unit -> int
Public Shared Function SizeOf(Of T) () As Integer
형식 매개 변수
- T
크기가 반환되는 형식입니다.
반환
T
제네릭 형식 매개 변수로 지정된 형식의 크기(바이트 단위)입니다.
설명
구조체가 없는 경우 이 메서드를 사용할 수 있습니다. 레이아웃은 순차적이거나 명시적이어야 합니다.
반환되는 크기는 관리되지 않는 형식의 크기입니다. 개체의 관리되지 않는 크기와 관리되는 크기는 다를 수 있습니다. 문자 형식의 경우 크기는 해당 클래스에 적용된 값의 CharSet 영향을 받습니다.
적용 대상
SizeOf<T>(T)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
지정된 형식의 개체의 관리되지 않은 크기를 반환합니다(바이트 단위).
public:
generic <typename T>
static int SizeOf(T structure);
public static int SizeOf<T> (T structure);
static member SizeOf : 'T -> int
Public Shared Function SizeOf(Of T) (structure As T) As Integer
형식 매개 변수
- T
structure
매개 변수의 형식입니다.
매개 변수
- structure
- T
크기가 반환되는 개체입니다.
반환
비관리 코드에서 지정된 개체의 크기(바이트)입니다.
예외
structure
매개 변수가 null
인 경우
설명
이 메서드는 참조 형식 또는 박스형 값 형식일 수 있는 구조체의 인스턴스를 허용합니다. 레이아웃은 순차적이거나 명시적이어야 합니다.
반환되는 크기는 관리되지 않는 개체의 크기입니다. 개체의 관리되지 않는 크기와 관리되는 크기는 다를 수 있습니다. 문자 형식의 경우 크기는 해당 클래스에 적용된 값의 CharSet 영향을 받습니다.
메서드를 SizeOf<T>(T) 사용하여 및 AllocCoTaskMem 메서드를 사용하여 할당할 관리되지 않는 메모리의 AllocHGlobal 양을 확인할 수 있습니다.
적용 대상
.NET