3. přednáška

Realokace paměti v C pomocí příkazu realloc

Pokud potřebujeme zvětšit alokované pole, můžeme si pomoci funkcemi malloc (nebo calloc) a free (nebo cfree). Tato možnost je v programu zakomentována. Můžeme však též vyuižít funkci realloc, která má dva parametry - pole, zněhož má nakopírovat hodnoty (je typu pointer na void) a novou velikost. Vrací pointer začátek nově přiděleného pole.

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