我定義了以下函數,其中List是一個結構。爲什麼我的calloc無法將所有東西都歸零?
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
這是怎麼回事?我知道這不是打印問題,因爲代碼也讀取非零值。我能夠可靠地將List結構清零的唯一方法似乎是單獨初始化所有成員。我不介意,但不應該calloc()
工作?
「malloc(0)'應該返回一個唯一的非零指針」羣體的另一個原因是破解...如果'calloc'已經返回了'NULL'程序會立即崩潰,並且錯誤會很明顯... – 2011-06-12 17:39:26
@R。有趣。 – BeeBand 2011-06-12 18:10:57