2016-09-26 11 views
0

나는 메모리를 매핑/표현하는 가장 좋은 방법이 무엇인지 알고 싶습니다. 예를 들어, 모든 필드가 직렬화되도록 구조를 설명하는 방법입니다.메모리를 "mangle"(표현하는) 가장 좋은 방법

난장이 디버그 데이터를 사용하여 클라이언트와 서버를 생성하는 RPC 라이브러리를 생성하므로 함수의 매개 변수를 serialize하고 deserialize 할 함수 래퍼를 만들어야합니다.

이제 모든 필드를 식별하기 위해 gcc 맹 글링 유형을 사용하고 있지만 컴파일러가 때때로 메모리 액세스 시간을 최적화하기위한 구멍을 만듭니다.

DwarfDumpIDE

어떤 생각 ? 내가 너무 어려운 내 비교적 간단한 직렬화 작업에 통합하는 것으로 있지만

답변

1

나는, 직렬화 (http://uscilab.github.io/cereal/)

대안은 구글의 프로토콜 버퍼를 포함하기위한 "시리얼"라이브러리를 사용합니다.

ZeroC의 ICE 라이브러리 (https://zeroc.com/products/ice)에 대한 경험이 풍부합니다. 구조를 Google의 프로토콜 버퍼와 비슷한 외부 컴파일 단계로 지정하십시오. 좋은 점은 네트워크 연결이 또한주의를 기울여야한다는 것입니다.

+0

이미 CBOR 라이브러리를 사용하여 직렬화하고 있습니다. 나는 단지 기억을 표현할 필요가있다. 포인터, char, int, double, float, long 등. gcc mangling letters를 사용 중입니다 ... –

+2

@MarceloAleksandravicius : 접선주의 사항 : 신뢰할 수없는 데이터를 깎지 마십시오. 기존의 이름 맹 글링 스키마는 악의적 인 용도에 대해 강력하지 않으며 기존 구현을 악용 할 수 있습니다. –

+1

@MarceloAleksandravicius 질문이 명확하지 않습니다. 직렬화 라이브러리를 사용하여 해결할 수있는 '컴파일러가 때때로 구멍을 만듭니다.'라는 문제가 있습니다. – Mikhail