2013-08-14 4 views
0

Screenshot of weird problemC# 바이트 배열이 올바르게 할당되지 않습니다.

C#에서 개체를 serialize하려는 중입니다. 객체 크기를 가져 와서 위의 스크린 샷에서 207 행의 size1 변수에 저장했습니다. Size1의 값은 160입니다. 그런 다음 size1을 사용하여210 행에 buf라는 바이트 배열을 할당합니다. Buf는 2 바이트 배열이됩니다! 어떻게 이럴 수있어?!

+2

이미지를 인쇄하는 대신 여기에 코드를 게시하십시오 !! –

+0

"line 210"이 무엇인지는 매우 분명합니다. P –

+0

size1의 값은 160입니까? – Paparazzi

답변

8

문제는 여기에 당신은 ReadBytes의 결과 buf를 교체

byte[] buf = new byte[size1]; 
byte[] buf2 = new byte[16]; 
buf = b.ReadBytes(...); //<---- 

입니다. 즉, 원래 배열을 버리고 ReadBytes (이 경우 2 바이트 배열)에서 반환 된 배열로 바꿉니다.

+0

바로! 내가 디버그 창에 표시된 바와 같이 로컬 변수의 값인 고전적인 초보자 실수를 범할 수는 없다. 프로그램이 정지/중단 될 때의 상태, 중단 점 이전의 임의의 임의의 줄이 아닌 상태. 나는 여전히 문제를 b.ReadBytes (...)로 알아 내야 만한다. 그러나 적어도 나는 정확한 골목으로 내려갈 것이다. 감사합니다 스콧! –

4

ReadBytes()는 byte[]을 반환합니다. 당신은 반환 어떤 b.ReadBytes() 동일 완전히 다른 byte[]에서 다음 buf 점을

buf = b.ReadBytes(Marshal.SizeOf(firstRecord)); 

을 쓸 때.

관련 문제