Я определил следующую функцию, где List - это структура.
List * LIST_Create()
{
List * l = calloc(0, sizeof(List));
unsigned char * pc = (unsigned char *)l;
for(i = 0; i < sizeof(List); i++)
{
LOG("LIST","0x%1x ", (unsigned char)*pc);
pc++;
}
}
Когда я распечатываю байты, я получаю это:
LIST: 0xffffffbf
LIST: 0x1
LIST: 0x13
LIST: 0x0
LIST: 0x1
LIST: 0x1
LIST: 0x0
LIST: 0x0
LIST: 0x0
LIST: 0x0
LIST: 0x0
LIST: 0x5
что происходит? Я знаю, что проблема не в печати, потому что код также читает ненулевые значения. Единственный способ, которым я могу надежно обнулить структуру списка, - это инициализация всех членов по отдельности. Я не против, но не должен calloc()
работать?