【问题标题】:how do i initialize a memory area for a multi dimensional structure array?如何初始化多维结构数组的内存区域?
【发布时间】:2015-09-18 22:35:02
【问题描述】:

我有一个声明如下的结构:

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

【问题讨论】:

    标签: memory initialization memset


    【解决方案1】:

    您正在使用该调用设置(L2_NUM_WAN_PORTS + L2_NUM_BYP_PORTS) * LABEL_T_CNT 字节 的内存。但是结构不是一个字节长。

    乘以sizeof(jpax_egrobstr_t) 得到要传递给memset 的总字节数。

    【讨论】:

      猜你喜欢
      • 2013-03-06
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多