Динамични масиви в C

  • използване наmalloc,calloc,realloc иfree; функции
  • чрез оператораnew иdelete.

Функциятаmalloc разпределя непрекъснат блок от клетки с памет за съхраняване на посочения обект и връща указател към първата клетка в този блок. Извикването на функцията изглежда така:

void *malloc(размер);

Тукразмер е цяло число без знак, което указва размера на разпределената област на паметта в байтове. Ако запазването на паметта е било успешно, тогава функцията връща променлива от типvoid *, която може да бъде преобразувана във всеки необходим тип указател.

Функцията -calloc също е предназначена да разпределя памет. Записът по-долу означава, че ще бъдат разпределениnum елементи отsize байта.

void *calloc(nime, size);

Тази функция връща указател към разпределената област илиNULL, ако паметта не може да бъде разпределена. Характеристика на функцията е нулирането на всички избрани елементи.

Функциятаrealloc променя размера на предварително разпределената памет. Те се обръщат към нея така:

char *realloc (void *p, size);

Функциятаfree се използва за освобождаване на разпределената памет. Те се обръщат към нея така:

без празнота (размер на празна *p);

Тукp е указател към част от паметта, предварително разпределена от функциитеmalloc,calloc илиrealloc.

int *mas=new int[10];

Разпределена е толкова памет, колкото е необходимо за съхраняване на 10 int стойности.

Когато динамичният масив (във всеки момент от работата на програмата) вече не е необходим, паметта може да се освободи с помощта на функциятаfree или оператораdelete.

Предлагам да разгледаме няколко задачи, които коригираттози урок:

Намерете сумата от реални елементи на динамичен масив.