我碰到下面的代碼:malloc會保證內存對齊嗎?
int main()
{
char *A=(char *)malloc(20);
char *B=(char *)malloc(10);
char *C=(char *)malloc(10);
printf("\n%d",A);
printf("\t%d",B);
printf("\t%d\n",C);
return 0;
}
//output-- 152928264 152928288 152928304
我想知道如何分配和填充由malloc()
完成。看看輸出,我可以看到起始地址是8的倍數。是否有其他規則?
無論您通過研究計算機上的malloc做什麼「規則」......只要您移動到另一臺計算機,或更改編譯器選項,或者月亮的相位發生變化,就應該沒有學習。 ..,... :) – pmg 2011-12-20 13:03:28
要打印一個指針,你應該使用'「%p」'並將其轉換爲void *':'printf(「%p」,(void *)A);' – pmg 2011-12-20 13:04:22
i dont真正理解你的問題。 – 2011-12-20 13:05:01