2017-11-01 2 views
1

죄송합니다. 저는 Greenhill 's를 처음 사용합니다. 저는 MULTI 6.1.6을 사용하고 있으며 제 언어는 C++입니다.C++ 메모리 할당 사용 Green Hills INTEGRITY

시뮬레이터를 사용하여 크기가 1M보다 큰 클래스의 객체를 새로 만들 때 문제가 발생합니다. SIZEOF (Class_Big가)> 1메가바이트 단순히 클래스의 생성자를 호출하지 않을 경우

Class_Big* big_obj; 
Class_Big = new Class_Big(); 
Class_Small* Small_obj; 
Small_obj = new Class_Small(); 

, NULL을 반환하고 다음 명령으로 이동 (Class_Small * Small_obj) 올바르게 다음 개체를 만듭니다. Class_Big의 일부 변수를 범위를 지정하여 < 1MB로 만들면 코드가 제대로 작동하고 객체가 만들어집니다.

나는 나의 xml 파일에 모두

MemoryPoolSize="0x200000" 
HeapSize="0x200000" 

을 추가했다.

내가 lib 디렉토리가 큰 클래스가 사용되는 경우의 위상을 구축 얻을 또 다른 오류 :

intex: error: Not enough RAM for request. 
intex: fatal: Integrate failed. 
Error: build failed 

당신이 그것을 도울 수 있습니까?

감사

문제의 첫 번째 부분에 대한
+0

_ "문제가 있습니다."_ 문제 설명이 아닙니다. 무슨 문제? 나쁜 일이 생겼어? 당신은 당신이 당신의 포스트에서 인용 할 수있는 과실을 얻는가? –

+0

먼저 답장을 보내 주셔서 감사합니다. 사실 아무런 오류가 없습니다. 클래스 생성자는 단순히 NULL을 반환하고 다음 명령으로 이동한다고하지 않습니다. – user2320492

+0

게시물을 편집하여 해당 정보를 포함 시키십시오. 문제를 완전히 설명하는 데 도움이되는 기타 내용 –

답변

1

힙 및 메모리 풀의 메모리 크기를 지정하려면 MULTI GUI에서 .int 파일로 이동하십시오 (확장되었을 때 .gpj 드롭 다운 아래에 있음). 두 번 클릭하여 편집하십시오. 그런 다음 자주색 상자를 마우스 오른쪽 단추로 클릭하고 "편집"으로 이동하십시오. "Attributes"탭으로 이동하면 메모리 풀 크기와 힙 크기를 더 크게 수정할 수 있습니다.

텍스트 편집기에서 .int 파일을 편집 할 수도 있지만 gui를 사용하여 설정하려면 위의 단계를 따르십시오. 자신의 사용 설명서에서 또한

:..

는 "사용중인 .bsp 파일을 확인 보드의 메모리와 일치해야합니다 을가, 이러한 키워드를 수정하지 않는 경우 MinimumAddress/MaximumAddress 키워드로 선언 메모리 .bsp 파일에 선언 된 메모리 이 보드와 일치하는 경우 더 적은 메모리를 사용하도록 응용 프로그램을 수정해야합니다. "

또한 default.ld를 확인하고 거기에있는 RAM 제한 값을 설정할 수 있습니다. __INTEGRITY_RamLimit 및 다른 값을보십시오. 희망이 도움이!

+0

이것은 위대하고 내 문제를 해결합니다. 감사! – user2320492

+0

문제 없습니다. 도움이 되니 기쁩니다! – 9Breaker

0

는 기본적으로 나는 .ld 구성 요소 파일에 "VirtualHeapSize"을 수정해야합니다.

두 번째 부분은 여전히 ​​알아 내려고합니다.

1

INTEGRITY를 사용하면 각 파티션에 사용되는 메모리 양을 완전히 제어 할 수 있습니다. 정적 구성입니다. 모든것, 코드 스택 힙은 그 이름에서 나온 것입니다. 따라서 파티션에 코드, 자동화 코드 등이 있으면 코드를 너무 많이 요청하면 메모리 할당이 실패 할 수 있습니다. 크기를 늘려보십시오.