我目前正在尝试创建一个缓冲区来保存数据,这些数据稍后将通过输出接口通过系统传递出去。此接口最多可接受256个字节的数据。此数据结构的目标如下:
以下是我的代码。
typedef struct
{
int TT1;
int TT2;
int Source;
int Data;
} Captured_data;
typedef struct
{
void *Buffer_start;
void *Buffer_current;
void *Buffer_end;
} Message_buffer;
void MB_init(Message_buffer *Message_buffer, int Elements)
{
Message_buffer -> Buffer_start = (Captured_data *)malloc(sizeof(Captured_data)*Elements+2);
Message_buffer -> Buffer_current = Message_buffer -> Buffer_start+2;
Message_buffer -> Buffer_end = Message_buffer + sizeof(Captured_data)*Elements+2;
}
我想在此缓冲区的开头添加2个字节,即0xAAAA。我最初的反应是添加一个Header_length常量,然后将Header_length添加到malloc的输入中。从那时起,我不知道如何为这两个字节赋值。
编辑:问题的关键是如何在初始化函数中分配Messagebuffer的前两位。
最后一个问题,如果我想将Buffer_start作为Char数组读出,我应该像这样指定那个点:
Message_buffer -> Buffer_start = (char *)malloc(sizeof(Captured_data)*Elements);
这意味着我正在分配一个大小为Char的数组(sizeof(Captured_data * Elements)。然后使用memcpy根据Buffer_current指向的内容将值直接加载到缓冲区中。