Разлика между динамичен масив и нединамичен

динамичните масиви се разпределят в паметта на стека (местни обекти, функционални параметри, върнати
стойности):
- съдържа произволни стойности;
- може да бъде "повреден" (повреден);
- животът е ограничен.и статичен в статична памет
статичните масиви се разпределят в статична памет (статични (глобални обекти, статични променливи):
- подчертано на етапа на изграждане;
- размерът е фиксиран и ограничен;
- размерът не може да се променя по време на изпълнение;
- се нулира.
Разликата е, че много често не знаем размера на масива или структурата на източника (и т.н.), така че разпределяме паметта вече в процеса на изграждане на програмата, например при създаването на списъци
Ето функция, която създава списък с "книги" (имам тази структура)
struct BOOK
char заглавие [30];
автор на char [30];
int страници;
>;
СТРУКТУРА
КНИГА * книга;
ПУНКТ * следващ;
>;


ITEM * createList (BOOK * книга)
ITEM * head = (ITEM *) malloc (sizeof (ITEM));
// ITEM * head = нов ITEM; // (C ++)
глава-> книга = книга;
head-> next = NULL;
връщаща глава;
>

Копиране на редове
Ако работата с malloc () и free () е толкова опасна, тогава може би
обикновено не си струва да използвате тези функции, но
по-добре е да дефинирате масивите по обичайния начин: int
p [1000000]?
За съжаление паметта, заета от такъв масив, не може да бъде