카테고리 없음

[C#] C#에서 C++ DLL 사용할 때 보호된 메모리를..

호마 2015. 6. 15. 15:43

체크 할 것



0. (함수 인자에 참조형을 사용 할 경우?,) 

   해당 소스 코드 프로젝트 속성에서 '빌드 > 안전하지 않은 코드 허용'에 체크한 후,

   unsafe { } 구문으로 감싸준다.


http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=125908&ref=125908




1. 선언한 배열의 크기보다 더 큰 데이터가 전달되지는 않았는지 확인한다.


http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=61219&ref=61195




2. C#에서 생성하지 않았거나 크기가 명확하지 않은 포인터를 직접 참조하지 않았는지 확인한다.


http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=150988&ref=150961




9. .Net 2.0 서비스 팩 버전 확인.. (ㅡㅡ; 너무 오래된 내용인 듯 하지만,)


http://bestofsky.com/48





-- 미 해 결 ㅜㅜ --


하지만, 메모리 문제 같음.. 가장 말이 많은 것을 보아..





-- 우왕 해결 -- 


2번의 경우 였음.. C# 에서 생성하지 않은 메모리를 C#에서 읽으려고 했음


해결 방법은 다음과 같다.


C++ 내에서 배열에 new 하는 것을 막고 C#에서 배열을 크게 해서 넘겨줌.


여기서, C# 에서 넘겨주는 배열의 크기가 작아도 같은 경고를 띄웠음 (1번 경우) !!