gcc(GCC)4.7.0 c89
私は以下を使用してメモリを割り当てています:
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
デバッガーでは、割り当てられるべきだったと思う32バイトではなく8バイトを取得します。
私の構造は次のとおりです。
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バイトを要求しました。