2015-01-04 1 views
1

메모리 할당 주소가> 4GB 메모리 범위로 넘어갈 때 제 32 비트 이식 코드가 올바르게 작동하는지 확인하고 싶습니다.64 비트 호환성을 확인하는 방법은 무엇입니까?

처음에는 내 메인 메서드에 4GB를 할당하는 것이 좋은 생각입니까?

기본 주소를 32 비트 범위 밖에서 설정하는 것이 더 좋습니까? 모든 동적 링크 라이브러리에 기본 주소를 설정해야합니까?

이미 정적 코드 분석기 결과를 살펴보고 내 코드를 검토 했음은 말할 필요도 없습니다.

+0

왜 작동하지 않을 것이라고 생각하십니까? 너 포인터로 우스운 일을하고 있니? 어떻게 든 직접 주소 비트를 조작? – Ferruccio

+0

* "Portable * code"는 "포팅 된"코드보다 훨씬 우수합니다 (전자는 Windoze에 항상 도전하고 있습니다). 4GB를 넘는 메모리 주소 지정은 코드가 64 비트를 준수하는지 여부의 작은 부분 중 하나입니다. 부딪 힐 수있는 다른 문제들 예 :'char' 타입보다 큰 어떤 것의 옥텟 크기를 가정해라. 그리고 CRT가 ptr의 상위 32 비트를 사용하는 주소를 이미 제공하고 있을지도 모른다는 보장은 없다. 간단히 말해서 어떤 일이없는 단순한 해결책이 없다. – WhozCraig

+0

[이식 사례의 예] (http : // www. .viva64.com/ko/a/0004 /), 문제 6 번이 우리 응용 프로그램에서 발생하지 않도록하고 싶습니다.이 문제를 테스트하기위한 두 가지 아이디어는 내 게시물에 언급되어 있습니다. FIXED] (http://msdn.microsoft.com/en-us/library/w368ysh2.aspx) 링커 섹션에서 또는 응용 프로그램에 충분한 메모리를 할당하십시오. 시작. 하지만 어느 쪽이 더 좋은지 확실하지 않습니다 ... – Darko

답변

3

프로그램의 이러한 측면을 스트레스 테스트하는 가장 쉬운 방법 중 하나는 메모리 할당을 위에서 아래로 사용하는 것입니다. 이는 다음에서 설명하는 레지스트리 설정을 통해 시스템 전체에서 활성화 할 수 있습니다. http://msdn.microsoft.com/en-us/library/bb190527.aspx

프로그램이이 설정으로 올바르게 실행될 수 있다고해서 올바른 것으로 입증되지는 않습니다. 하향식 메모리 할당은 가장 일반적인 32/64 비트 버그를 제거하는 한 가지 방법 일뿐입니다.

+0

좋은 생각, 고마워요!/BASE 또는/FIXED 아이디어에 대해 어떻게 생각하십니까? – Darko

+0

로드 주소를 4GB 이상으로 설정할 수 있는지 확신 할 수 없습니다. 가치가있는 시도. –

관련 문제