natknąłem się na następujący kod:Jakie gwarancje ma malloc na temat wyrównania pamięci?
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
Chcę wiedzieć, w jaki sposób alokacji i wyściółka jest wykonywana przez malloc()
. Patrząc na wynik, widzę, że adres początkowy jest wielokrotnością 8. Czy istnieją jakieś inne zasady?
Niezależnie od "reguł", których "nauczysz się" przez badanie tego, co malloc robi na twoim komputerze ... powinno być nieuczone, gdy tylko przejdziesz do innego komputera, lub zmienić opcje kompilatora, lub faza księżyca się zmieni,. .. ... :) – pmg
aby wydrukować wskaźnik naprawdę powinien użyć ' "% s"' i obsady do 'void *': 'printf ("% s", (void *) a);' – pmg
dont naprawdę rozumiem twoje pytanie. –