나는이 구조를 통과하기 위해 노력하고있어 :는 구조가 참조되는 액세스 위반이 발생
#pragma managed
private class __gc GlobalFunctions
{
static void WriteField(Object* object, PARAMTER& par, unsigned dec)
{
switch (par.type)
{
....
}
}
};
:이 클래스의 정적 메서드에
#pragma unmanaged
typedef struct
{
void* data;
unsigned nlen;
unsigned int type;
} PARAMETER;
을 이 기능에서
: 64 비트 시스템에서
public class __gc WorkerClass
{
void SetValueAt(long index, Object* value)
{
PARAMETER aux;
aux.type = 3;
GlobalFunctions::WriteField(value, aux, 0);
}
};
, 내가 말하는 액세스 위반을 얻을 주소 '0x000c'을 읽을 수 없습니다.
이제 64 비트 시스템에서 par 참조가 null 포인터 인 경우 par.type의 역 참조는 0x0c의 주소가됩니다. 파가 스택 상에있는 것을 제외하고 - 나는 널 포인터를 WriteField에 전달하지 않을 것이지만 나는 하나를 꺼내는 것 같다.
Managed C++에서 하나의 관리되는 클래스 인스턴스 메서드를 다른 정적 메서드로 호출 할 때 구조체를 비 정렬 마샬링 문제에 취약하게 전달한다는 사실이 무엇입니까?
관리되지 않는 구조가 관리되는 코드로 처리되는 방법을 설명하는 웹 설명서가 있습니까?
#pragma 's가 이미 존재한다는 것을 잊어 버렸습니다. – Eli