Kihagyás

9. előadás

Dinamikus memóriakezelés

  • malloc: dinamikus memória foglalása
    • használat után szükséges a memória visszaadása
void alloc1(int nelem){
    void * ptr = malloc(nelem * sizeof(int));

    if ( NULL != ptr ){
        /* sikeres memóriafoglalás */
        int * ip = (int *)ptr; /* típushelyes használat */
        free(ip); /* memódia visszaadása */
    }else{
        /* memóriafoglalás sikertelen volt */
    }
}
  • calloc: dinamikus memória foglalása és inicializálása
    • Paraméterei: elemek száma, elemek mérete
void alloc2( int nelem)
{
  void *ptr = calloc( nelem, sizeof(int) );

  if ( NULL != ptr )
  {
    /* sikeres memóriafoglalás, csupa zéró */
    int *ip = (int *) ptr; 
    /* memória ip-n keresztüli típushelyes használata */ 
    free( ip );   /* memória visszaadása */
  }
  else
  {
    /* memóriafoglalás sikertelen volt */
  }
}

Ha nem adjuk vissza a memóriát, akkor a változó nem lesz elérhet, DE továbbra is foglalja a memóriát -> memory leak