我正在使用一个简单的数据包序列化程序,我很难为我的数据包创建标头。我正在创建一个缓冲区,然后尝试将前两项加载到缓冲区中。我运行 memcopy 但缓冲区中实际上没有任何内容,然后当我尝试解压缩它时,我遇到了分段错误。在线阅读示例我认为我做对了。任何帮助,将不胜感激。
当打印出 uint 的值时,每个都有数据。
void createHeader(int messageLength, char* message) {
uint16_t version = 457;
uint16_t htonsVersion = htons(version);
uint16_t length = messageLength;
uint16_t htonsLength = htons(length);
char buffer[142];
printf("%" PRIu16 "\n", version);
printf("%" PRIu16 "\n", htonsVersion);
printf("%" PRIu16 "\n",htonsLength);
printf("%" PRIu16 "\n",length);
memcpy(buffer+0, &htonsVersion, sizeof htonsVersion);
memcpy(buffer+2, &htonsLength, sizeof htonsLength);
printf("%s \n", "UNPACK");
uint16_t* testPacketVersion;
memcpy(testPacketVersion, buffer+0, sizeof buffer+0);
uint16_t* testPacketMessage;
//Segmentation fault happens here
memcpy(testPacketMessage, buffer+2, sizeof buffer+2);
char* returnMessage;
}