약간의 연구를했지만 명확한 승인이나 거부를 찾을 수 없습니다.가변 길이 데이터와 길이가 0 인 배열의 이진 직렬화는 안전합니까?
내가 원하는 것은 고정 크기 구조 + 가변 길이 부분이므로 직렬화를 간단하고 오류가 발생하지 않는 방식으로 표현할 수 있습니다.
struct serialized_data
{
int len;
int type;
char variable_length_text[0];
};
: 그리고 MSVC, GCC는 등 그 소리는, 그것으로 확인하는 경우
serialize_data buff = (serialize_data*)malloc(sizeof(serialize_data)+5);
buff->len=5;
buff->type=1;
memcpy(buff->variable_length_text, "abcd", 5);
불행하게도 내가 찾을 수 없습니다.
어쩌면 동일한 것을 달성하는 더 좋은 방법이 있을까요?
은 정말 모든 주위 사람들 추한 캐스트를하지 않으려는이 프로그램 길이가 0 인 배열을 사용
memcpy((char*)(((char*)buffer)+sizeof(serialize_data)), "abcd", 5);
이다. – ildjarn
언어를 선택하십시오. C++ 또는 C에 관심이 있습니까? –
이 기사가 유용 할 것입니다. 이식성 질문에 대답하지 않지만이 패턴에 대한 통찰력을 제공합니다. http://blogs.msdn.com/b/oldnewthing/archive/2004/08/26/220873.aspx – JaredPar