Warning
This page is located in archive.

3. přednáška

Parametry funkce main

K alokaci paměti slouží v jazyce C příkaz malloc. Má jeden parametr - velikost paměti - a vrací pointer na začátek přidělené paměti nebo NULL, pokud se nepodařilo paměť přidělit. Přidělený pointer ukazuje na hodnotu typu void. Proto je třeba jej přetypovat na správnou hodnotu. Dynamické pole a pointer se alokují stejně, u pole se akorát musí velikost položky vynásobit počtem položek. Paměť se uvolňuje příkazem free, který má jako parametr pointer na paměť, kterou chcenme uvolnit. Tento pointer má ukazovat na void, proto je nutné proměnnou přetypovat. Po uvolnění paměti však obsah proměnné zůstává zachován (proměnná ovšem již ukazuje do nepřidělené paměti), proto je vhodné její hodnotu změnit na NULL.

#include <stdio.h>
 
int main(void)
{
  int *p, *pole, i;
  p = (int*) malloc(sizeof(int));
  pole = (int*) malloc(sizeof(int)*10);
 
  *p = 5;
  for(i=0; i<10; i++)
    *(pole+i) = (i*2)%5;
  for(i=9; i>=0; i--)
    printf("%d, ", *(pole+i));
  printf("\np = %d\n", *p);
 
  free ((void*) pole);
  free ((void*) p);
 
  pole=NULL;
  p=NULL;
 
  return 0;
}
Zpět

courses/a7b36pjc/lectures/ds03/malloc-c.txt · Last modified: 2015/01/16 21:04 (external edit)