我有一个结构声明如下:
typedef struct jpax_egrobstr_s {
bcm_if_t egr_obj;
INT32 label;
}jpax_egrobstr_t;
#define L2_NUM_WAN_PORTS 6
#define L2_NUM_BYP_PORTS 2
#define LABEL_T_CNT 4096
的定义如
static jpax_egrobstr_t SW_Egrobj[(L2_NUM_WAN_PORTS + L2_NUM_BYP_PORTS)][LABEL_T_CNT];
现在我需要将所有这些区域初始化为-1
,所以我选择这样做来启动它:
#define MEM_DEFAULT 0xFFFFFFFF
memset(SW_Egrobj, MEM_DEFAULT,
(L2_NUM_WAN_PORTS + L2_NUM_BYP_PORTS) * LABEL_T_CNT);
但事实证明,它似乎并没有真正发挥作用,我仍然在位置[6] [0]找到一个0x00。为什么是这样?结构数组的内存是否不连续
CPU: PowerPC
答案 0 :(得分:1)
您正在使用该调用设置内存的(L2_NUM_WAN_PORTS + L2_NUM_BYP_PORTS) * LABEL_T_CNT
字节。但结构不是一个字节长。
乘以sizeof(jpax_egrobstr_t)
以获取要传递给memset的总字节数。