我碰到下面的代码: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