一.背景:
1.使用#pragma定义结构体:RECV_CMD_DATA_t和RECV_CMD_PACK_t,按照1字节进行内存对齐
#pragma pack(1)
typedef struct recv_cmd_data
{
int iType;
long long llInt;
int iLen;
char cStr[REPLY_STR_MAX_LEN];
}RECV_CMD_DATA_t;
typedef struct recv_cmd_pack
{
int iCnt;
RECV_CMD_DATA_t sCmdData[REPLY_TRANS_MAX_CNT];
}RECV_CMD_PACK_t;
#pragma pack()
2.redis中定义的结构体:redisReply,按照4字节进行内存对齐
/* This is the reply object returned by redisCommand() */
typedef struct redisReply {
int type; /* REDIS_REPLY_* */
long long integer; /* The integer when type is REDIS_REPLY_INTEGER */
int len; /* Length of string */
char *str; /* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */
size_t elements; /* number of elements, for REDIS_REPLY_ARRAY */
struct redisReply **element; /* elements vector for REDIS_REPLY_ARRAY