Маллоц () вс цаллоц (): Кључне разлике објашњене на примерима

Пре него што научимо разлику између маллоц-а и цаллоц-а, научимо-

Шта је динамичко додељивање меморије?

Динамичко додељивање меморије је процес додељивања меморије током извођења. Постоје четири библиотечке рутине, цаллоц (), фрее (), реаллоц () и маллоц () које се могу користити за алокацију меморије и њено ослобађање током извршавања програма. Ове рутине су дефинисане у заглавној датотеци званој стдлиб.х.

Шта је маллоц ()?

То је функција која се користи за динамичко додељивање блока меморије. Резервира меморијски простор одређене величине и враћа нулти показивач који показује на меморијску локацију.

Враћени показивач обично је типа воид. То значи да било којем показивачу можемо доделити функцију маллоц. Пуни облик маллоца је додељивање меморије.

У овом упутству ћете научити:

  • Шта је динамичко додељивање меморије?
  • Шта је маллоц ()?
  • Шта је цаллоц ()?
  • Зашто користити маллоц ()?
  • Зашто користити цаллоц ()?
  • Синтакса маллоц ()
  • Синтакса цаллоц ()
  • Пример маллоц () у Ц.
  • Пример калока () у Ц.
  • Разлика између калока () и маллоца ()

Шта је цаллоц ()?

Функција Цаллоц () користи се за додељивање више блокова меморије. То је функција динамичког додељивања меморије која се користи за додељивање меморије сложеним структурама података као што су низови и структуре. Ако ова функција не додијели довољно простора како је наведено, враћа нулл показивач. Пуни облик функције белог лука је суседна алокација.

Зашто користити маллоц ()?

Ево разлога за употребу маллоц ()

  • Требало би да користите маллоц () када морате да доделите меморију током извршавања.
  • Маллоц бисте требали користити када морате додијелити објекте који морају постојати изван извршења тренутног меморијског блока.
  • Идите на маллоц () ако требате да доделите меморију већу од величине тог стека.
  • Враћа показивач на први бајт додељеног простора.
  • Омогућава програмерима да алоцирају меморију по потреби у тачној количини.
  • Ова функција додељује величину бајтова меморијског блока из гомиле.

Зашто користити цаллоц ()?

Ево разлога за употребу цаллоц ()

  • Када морате да доделите додељену меморију на нулу.
  • Можете користити цаллоц који враћа показивач да бисте добили приступ гомили меморије.
  • Користи се када елементе требате иницијализовати на нулу да бисте вратили показивач у меморију.
  • Да бисте спречили преливање које је могуће помоћу маллоц ()
  • Користите цаллоц () да бисте затражили страницу за коју се зна да је већ постављена на нулу.

Синтакса маллоц ()

Ево синтаксе маллоц ()

ptr = (cast_type *) malloc (byte_size);

У горњој синтакси, птр је показивач на цаст_типе. Функција маллоц враћа показивач на додељену меморију бите_сизе.

Example: ptr = (int *) malloc (50)

Када се ова изјава успешно изврши, резервисан је меморијски простор од 50 бајтова. Адреса првог бајта резервисаног простора додељује се показивачу "птр" типа инт.

Синтакса цаллоц ()

Ево синтаксе маллоц ()

ptr = (cast_type *) calloc (n, size);

Горња синтакса се користи за додељивање н меморијских блокова исте величине. Након додељивања меморијског простора, сви бајтови се иницијализују на нулу. Враћен је показивач који је тренутно у првом бајту додељеног меморијског простора.

Пример маллоц () у Ц.

У доњем коду сизеоф (* птр) се користи за додељивање меморијског блока од 15 целих бројева. У изјави принтф налазимо вредност 6. целог броја.

#include#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr));if (ptr != NULL) {*(ptr + 5) = 480;printf("Value of the 6th integer is %d",*(ptr + 5));}}

Излаз:

Вредност 6. целог броја је 480

Пример калока () у Ц.

Програм за језик Ц у наставку израчунава збир првих десет појмова. Ако је вредност показивача нулл, тада меморијски простор неће бити додељен.

Петља фор се користи за понављање вредности променљиве "и" и испис сума. На крају, функција фрее се користи за ослобађање показивача.

#include #include int main() {int i, * ptr, sum = 0;ptr = calloc(10, sizeof(int));if (ptr == NULL) {printf("Error! memory not allocated.");exit(0);}printf("Building and calculating the sequence sum of the first 10 terms \n");for (i = 0; i < 10; ++i) { * (ptr + i) = i;sum += * (ptr + i);}printf("Sum = %d", sum);free(ptr);return 0;}

Излаз:

Изградња и израчунавање збира секвенце првих 10 чланова н Збир = 45

Разлика између калока () и маллоца ()

Ево важне разлике између маллоц () и цаллоц ():

маллоц () цаллоц ()
Функција Маллоц () ће створити један блок меморије величине коју је одредио корисник. Функција Цаллоц () може променљивој доделити више блокова меморије.
Маллоц функција садржи вредност смећа. Меморијски блок додељен функцијом цаллоц увек се иницијализује на нулу.
Број аргумената је 2. Број аргумената је 1.
Цаллоц је спорији од маллоца. Маллоц је бржи од цаллоц-а.
Није сигуран у поређењу са бешусом. Сигуран је за употребу у поређењу са маллоц-ом.
Временска ефикасност је већа од калока (). Временска ефикасност је нижа од маллоц ().
Функција Маллоц () враћа само почетну адресу и не чини је нулом. Пре додељивања адресе, функција Цаллоц () враћа почетну адресу и ставља је на нулу.
Не извршава иницијализацију меморије. Изводи иницијализацију меморије.

КЉУЧНЕ РАЗЛИКЕ:

  • функција маллоц () враћа само почетну адресу и не чини је нулом с друге стране, функција цаллоц () враћа почетну адресу и чини је нултом.
  • У функцији маллоц број аргумената је 2, док је у функцији цаллоц број аргумената 1.
  • временска ефикасност маллоц () већа је од цаллоц () док маллоц () није сигуран у поређењу са цаллоц ()
  • маллоц не иницијализује меморију, док цаллоц врши иницијализацију меморије.

Занимљиви Чланци...