| Gorlash (21) | |
|
I'm creating a class that will allocate and manage a list of structs... The struct is: typedef struct tab_data_s { // various struct elements } tab_data_t, *tab_data_p ; In my private data I have: tab_data_p *tab_list ; and my constructor is: //**************************************************************************** CTabControl::CTabControl(uint max_array_elements) : tab_list(NULL), max_elements(max_array_elements), curr_elements(0) { tab_list = (tab_data_p *) new tab_data_p[max_elements] ; ZeroMemory((char *) tab_list, max_elements * sizeof(tab_data_p)) ; } This compiles and runs successfully, but sizeof(tab_list) returns 4, not (max_elements * sizeof(tab_data_p))... That has me worried that I'm not really allocating an array of pointers, like I think I am... How can I ensure that I really allocated what I think I did?? | |
|
|
|
| ssrun (49) | |
| sizeof(tab_list) is a pointer so it will return 4 bytes as it's size. I think you want to zero out max_elements * sizeof(tab_data_t); | |
|
|
|
| vlad from moscow (3662) | |
|
It is correct because tab_list is declared as pointer to pointer to a structure. tab_data_p *tab_list ; | |
|
|
|