W pierwszym przypadku, sama a
zajmuje sizeof(int *)
bajtów pamięci automatycznej i wskazuje na 10 * sizeof(int)
bajtów pamięci dynamicznej.
W tym ostatnim przypadku b
zajmuje 10 * sizeof(int)
bajtów pamięci automatycznej. Ponieważ b
jest tablicą, nie ma wskaźnika.
Pierwszy przypadek wykorzystuje więcej całkowitych bajtów, ale mniej na stosie (zakładając, że stos jest używany do automatycznego przechowywania).
Jeśli całkowita liczba używanych bajtów jest stosunkowo mała, automatyczne przechowywanie jest zwykle w porządku. W przypadku większych ilości preferowane jest przechowywanie dynamiczne. W szczególności dla implementacji stosu zbyt duża liczba zbyt dużych zmiennych automatycznych może przepełnić stos.
Może alokować dowolną pamięć w stosie dla wskaźnika '* a' w zależności od działania kompilatora. Jeśli używasz 'i a' w dowolnym miejscu, tak, ale w przeciwnym razie wszystkie zakłady są wyłączone. –
Dzięki. Poproszę moją odpowiedź. – giusti
@DietrichEpp Czytanie ponownie, być może źle zrozumiałem twój komentarz. Czy możesz dać mi konkretny przykład? – giusti