2
:문자열에 대한 포인터를 사용할 수없는 이유는 무엇입니까? 다음과 같은 코드로
그것은 컴파일 오류가 발생static unsafe void Main(string[] args)
{
int a = 5;
IntPtr pa = new IntPtr(&a); // no error
var xa = pa.ToPointer();
string b = "test";
IntPtr pb = new IntPtr(&b); // compile error
var xb = pb.ToPointer();
}
:
관리 유형 ('유형')에 대한 포인터를,의 주소를 가지고의 크기를 얻을, 또는 선언 할 수 없습니다
을관리되는 유형의 포인터가 있으면 어떨까요?
가능한 복제본 [주소를 가져올 수 없거나 크기를 가져 오거나 관리되는 유형을 가리키는 포인터를 선언 할 수 없습니다] (http://stackoverflow.com/ 질문/13299153/get-the-take-of-a-get-of-a-of-a-managed-a-managed-to-a-managed-t) –
가능한 복제본 [C# .NET 지점에서 IntPtr 작성 가능 문자열 값] (0120)을 참조하십시오. –
컴파일러는 사용자가 IntPtr을 참조 할 수 없다고 100 % 확신합니다. 바르게. 그것은 맞습니다. 문자열은 IntPtr을 초기화 한 후 아무 때나 파괴 될 수 있습니다. .NET 가비지 컬렉터는 보수적 인 수집가가 아닙니다. –