임베디드 유형 시스템에서 표준 메모리 할당 시스템 위에 피기 백하는 작은 객체 할당자를 만들었습니다. 이 할당자는 Boost :: simple_segregated_storage <> 클래스이며 내부 조각화가 발생하여 작은 객체에 대한 O (1) alloc/dealloc 시간을 정확하게 필요로합니다. 내 질문은 그것을 선언하는 것이 최선의 방법입니다. 지금 당장은 mem 코드 모듈에 선언 된 스코프 스태틱 (static)입니다. 괜찮습니다.하지만 조금 노출 된 느낌이 들었습니다. 이제는이 모듈과 영원히 연결되어 있습니다. 일반적으로 monostate 또는 singleton으로 선언하지만 동적 메모리 할당자를 사용합니다 (이 위치에 동적 메모리 할당자가 사용됩니다). 또한 정적 객체 초기화가 시스템에서 발생하기 전에 동적 메모리 할당자가 초기화되고 사용됩니다. 메모리 관리자는 엔진의 가장 기본적인 구성 요소입니다.)이 catch 22를 해결하기 위해 작은 객체 할당자가 아직 존재하는지 확인하기 위해 '작은 메모리 할당자가 있으면'추가했습니다. 그것은 이제 모든 작은 객체 할당에서 실행되어야합니다. 사물의 계획에서 이것은 거의 무시할 수 없지만 여전히 괴롭습니다.디자인 : 특수 메모리 핸들러 클래스를 선언하는 방법
메모리 모듈에서이 부분을 분리하고 여분의 isinitialized() if 문을 사용하지 않는 데 도움이되는 메모리 관리자의이 부분을 선언하는 것이 더 좋은 방법일까요? 이 방법이 동적 메모리를 사용하는 경우 관리자의 작은 객체 부분의 초기화 부족을 해결하는 방법을 설명하십시오.
저는 ARM에서 이러한 것을 설계하는 데 많은 시간을 할애하고 있습니다. 필자가 본 라이브러리는 RAM이 8K 이하인 시스템에서는 실제로 설계되지 않았습니다. 속도가 중요하지 않다면, 가비지 수집 문자열/배열 클래스가 많은 사용 시나리오에서 일반 라이브러리의 절반 이하의 RAM을 필요로 할 것이라고 예상 할 수 있습니다 (예 : 외부 참조는 관리 배열의 uint16_t 인덱스입니다). 작은 참조 또는 원시 바이트 배열에는 2 바이트의 오버 헤드가 있고 참조에는 각각 2 바이트가 사용되며 큰 배열에는 약 4 %의 추가 오버 헤드가 발생합니다. – supercat
그런 디자인이 합리적인 아이디어처럼 보입니까? 다 끝났습니까? – supercat