C-kieli ja dynaaminen muistin varaus Keko (heap) Dynaamiset taulukot malloc(), calloc(), realloc() ja free()
Mikä on keko (heap) ? Kaaviokuva ohjelman muistialueesta koodisegmentti (vakiokoko, ei voi kirjoittaa) main(), printf(), jne. datasegmentti (vakiokoko, joihinkin voi kirjoittaa) globaalit muuttujat paikalliset muuttujat ”dynaaminen muistialue” pino (koko vaihtelee) keko (koko vaihtelee)
Dynaamiset taulukot C:n taulukoiden koko määritellään ohjelman kirjoitettaessa Taulukon kokoa ei voi lisätä/vähentää Dynaamisilla taulukoilla kokoa voi muuttaa ajoaikana double taulukko[10];
Dynaamisten taulukoiden käyttö Määritä osoitin haluttuun taulukko elementtiin Alusta osoitin malloc():n tai calloc():n avulla varattuun muistialueeseen Vertaa osoitinta NULL osoittimeen Lisää/vähennä alkioiden määrää realloc():n avulla Vapauta varattu muisti free():llä double *p;
Dynaamisten taulukoiden käyttö Määritä osoitin haluttuun taulukko elementtiin Alusta osoitin malloc():n tai calloc():n avulla varattuun muistialueeseen Vertaa osoitinta NULL osoittimeen Lisää/vähennä alkioiden määrää realloc():n avulla Vapauta varattu muisti free():llä double *p;
Dynaamisten taulukoiden käyttö Määritä osoitin haluttuun taulukko elementtiin Alusta osoitin malloc():n tai calloc():n avulla varattuun muistialueeseen Vertaa osoitinta NULL osoittimeen Lisää/vähennä alkioiden määrää realloc():n avulla Vapauta varattu muisti free():llä void *malloc(size_t size); void *calloc(size_t nmemb, size_t size);
Dynaamisten taulukoiden käyttö Määritä osoitin haluttuun taulukko elementtiin Alusta osoitin malloc():n tai calloc():n avulla varattuun muistialueeseen Vertaa osoitinta NULL osoittimeen Lisää/vähennä alkioiden määrää realloc():n avulla Vapauta varattu muisti free():llä if((p=malloc(size)) == NULL)
Dynaamisten taulukoiden käyttö Määritä osoitin haluttuun taulukko elementtiin Alusta osoitin malloc():n tai calloc():n avulla varattuun muistialueeseen Vertaa osoitinta NULL osoittimeen Lisää/vähennä alkioiden määrää realloc():n avulla Vapauta varattu muisti free():llä void *realloc(void *ptr, size_t size); p=realloc(taulukko_p, max*sizeof(double));
Dynaamisten taulukoiden käyttö Määritä osoitin haluttuun taulukko elementtiin Alusta osoitin malloc():n tai calloc():n avulla varattuun muistialueeseen Vertaa osoitinta NULL osoittimeen Lisää/vähennä alkioiden määrää realloc():n avulla Vapauta varattu muisti free():llä free(p);