File: Stare vježbe/vjezbe10/60__malloc.c
/* 60__malloc.c Dinamicka alokacija memorije - funkcije malloc i free. ----- Prototip funkcije malloc: void* malloc(size_t size); Funkcija malloc vraca void* pointer na alocirani komad memorije velicine size, odnosno NULL ukoliko zahtjev za alokacijom memorije iz nekog razloga nije mogao biti ispunjen (npr. ostalo je premalo slobodne memorije). Prototip funkcije free: void free(void* memblock); Funkcija free dealocira komad memorije na kojeg pokazuje pointer memblock i koji je prethodno bio alociran odgovarajucim pozivom funkcije malloc. */ #include <stdio.h> #include <stdlib.h> #include <malloc.h> int main() { int* p_int; float* p_float; printf("p_int = %d, p_float = %d\n", p_int, p_float ); /* Buduci da pointeri p_int i p_float u ovom trenutku jos nisu inicijalizirani ne smijemo ih dereferencirati */ /* Alociramo sizeof(int) byteova memorije za pointer p_int */ p_int = (int*) malloc(sizeof(int)); /* Alociramo sizeof(float) byteova memorije za pointer p_float */ p_float = (float*) malloc(sizeof(float)); if(p_int==NULL || p_float==NULL) { printf("Greska u alokaciji memorije!\n"); exit(1); } /* sada su pointeri p_int i p_float inicijalizirani, pa ih smijemo dereferencirati */ *p_int=3; *p_float=3.14; /* ili npr: scanf("%d %f", p_int, p_float); */ printf("p_int = %d, p_float = %d\n", p_int, p_float ); printf("*p_int = %d, *p_float = %f\n", *p_int, *p_float ); /* Na kraju obavezno moramo osloboditi alociranu memoriju pomocu funkcije free */ free(p_int); free(p_float); return 0; }
|