GCC(GCC)的4.7.0 C89malloc的不分配正確數目的字節
我使用以下分配存儲器:
db_data_size = 32;
db->db_data[i]->name = malloc(db_data_size);
(gdb) p db_data_size
$24 = 32
(gdb) p sizeof(db->db_data[i]->name)
$25 = 8
(gdb) n
205 db->db_data[i]->email = malloc(db_data_size);
(gdb) p sizeof(db->db_data[i]->name)
$26 = 8
在調試我得到8個字節,而不是32個字節我認爲應該分配。
我的結構是:
struct data {
int id;
int set;
char *name;
char *email;
};
struct database {
struct data **db_data;
size_t database_rows;
size_t database_data_size;
};
唯一想我能想到的是,一個char *爲8個字節,而這正是我得到。但是,在malloc中,我明確要求32個字節。
這是菜鳥的常見錯誤,顯然;其他例子最近發佈:http://stackoverflow.com/questions/12598839/using-sizeof-with-sprintf-vsnprintf-corrupts-text –
更一般地說,菜鳥的錯誤是假設你知道它的名字是什麼;-) –
我已經分配了32位的字節大小:db_data_size = 32; db-> db_data [i] - > name = malloc(db_data_size); – ant2009