2009-02-09 3 views

답변

3

const은 분명히 너가 그것을 바꿀 수 없다는 표시가 있어야한다 :-). 그러나 포인터가 변경해서는 안되는 상태 중 하나 인 포인터는 포인터가 가리키는 데이터가 변경되지 않아야한다고 진지하게 주장합니다.

그런 이유로 액세스 위반이 발생합니다.

당신이해야 할 일은 복사입니다. 그냥 캐스팅하지 않고 다른 데이터를 저장하는 것이 아니라 다소 덜 const입니다. 힌트 : Buffer.BlockCopy가 방법입니다.

1

sizeof(int) > sizeof(byte) 아니요? 그렇다면 문제가 발생할 것입니다.

+0

바이트 배열을 4 배 더 크게 만들 수 있습니다. 그건 내 추측 일텐데. – paxdiablo

1

const 수정자는 PInvoke 서명에 영향을주지 않지만 데이터 처리 방법에 영향을 줄 수 있습니다. 버퍼 매개 변수가 정수에 대한 포인터의 배열이기 때문에 올바른 번역은 다음과 같습니다

IntPtr[] buffer; 
0

편집 : 그것은 이제 더 AccessViolation 예외를 작동하지 않습니다,하지만 난 그런 배열에서 제대로 데이터를 검색하는 방법을 모르겠어요.

예제 파일이 유형의 액세스 사용된다

buffer[0][i] 
buffer[1][i] 

을하지만 [완충액 만 1 포인터를 가지고있다. 그 포인터는 2 차원 배열에 대한 포인터입니까? .NET으로 마샬링하는 방법? 감사!

+0

업데이트 된 정보로 원래 질문을 편집하십시오. 이것은 답이 아닙니다. :) –

관련 문제