2015-09-18 5 views
0

У меня есть strcture объявлены как:Как инициализировать область памяти для массива многомерной структуры?

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, так что я решил сделать это, чтобы inititalize его:

#define  MEM_DEFAULT  0xFFFFFFFF 
memset(SW_Egrobj, MEM_DEFAULT, 
     (L2_NUM_WAN_PORTS + L2_NUM_BYP_PORTS) * LABEL_T_CNT); 

но получается, что это действительно не работает, я считаю, что 0x00 в месте [6] [0]. почему это? Если память не будет постоянной для массива структуры.
CPU: PowerPC

ответ

1

Вы установка (L2_NUM_WAN_PORTS + L2_NUM_BYP_PORTS) * LABEL_T_CNTбайт памяти с этим вызовом. Но структуры не являются байтами.

Умножьте на sizeof(jpax_egrobstr_t), чтобы получить общее количество байтов для передачи в memset.

+0

О да, конечно! Мне манекен! Спасибо Крису! – cerr