Malloc (jazyk C): Rozdiel medzi revíziami
Skočit na navigaci
Skočit na vyhledávání
d (→Zdroje) |
d (→Príklad) |
||
(3 medziľahlé úpravy od 3 ďalších používateľov nie sú zobrazené) | |||
Riadok 13: | Riadok 13: | ||
==Podrobný popis funkcie== | ==Podrobný popis funkcie== | ||
− | + | Funkcia pridelí (alokuje) požadovanú veľkosť pamäte a vráti [[Jazyk C - smerník (pointer)|smerník]] odkazujúci na túto časť pamäte.<ref>https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm</ref> | |
==Parametre== | ==Parametre== | ||
Riadok 28: | Riadok 28: | ||
int main() { | int main() { | ||
− | + | char *str; | |
− | + | str = (char *)malloc(7); //pridelí pamäť s veľkosťou 7 bajtov smerníku str | |
− | + | strcpy(str, "kiwiki"); | |
− | + | printf("Textovy retazec = %s, Adresa = %u\n", str, str); | |
− | + | str = (char *)realloc(str, 13); //zmení veľkosť pridelenej pamäte zo 7 bajtov na 13 bajtov | |
− | + | strcat(str, ".info"); | |
− | + | printf("Textovy retazec = %s, Adresa = %u\n", str, str); | |
− | + | free(str); //zruší pridelenie pamäte | |
− | + | return 0; | |
} | } | ||
</source> | </source> | ||
− | Výstup: | + | ''Výstup:'' |
Textovy retazec = kiwiki, Adresa = 14313456 | Textovy retazec = kiwiki, Adresa = 14313456 | ||
Textovy retazec = kiwiki.info, Adresa = 14313912 | Textovy retazec = kiwiki.info, Adresa = 14313912 | ||
==Referencie== | ==Referencie== |
Aktuálna revízia z 23:19, 19. máj 2020
<ctype.h> | <limits.h> | <stdio.h> | <stdlib.h> | <math.h> | <string.h> | <time.h> |
---|---|---|---|---|---|---|
isalnum |
printf |
system |
Funkcia malloc
knižnica | stdlib.h |
popis | Pridelí (alokuje) požadovanú veľkosť pamäte. |
Úplný funkčný prototyp:
void *malloc(size_t size)
Podrobný popis funkcie
Funkcia pridelí (alokuje) požadovanú veľkosť pamäte a vráti smerník odkazujúci na túto časť pamäte.[1]
Parametre
- size
- Veľkosť vyžadovanej pamäte v bajtoch.
Návratová hodnota
Vráti smerník odkazujúci na pridelenú (alokovanú) časť pamäte. Ak sa nepodarilo prideliť (alokovať) pamäť, tak vráti NULL.
Príklad
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 int main() {
6 char *str;
7
8 str = (char *)malloc(7); //pridelí pamäť s veľkosťou 7 bajtov smerníku str
9 strcpy(str, "kiwiki");
10 printf("Textovy retazec = %s, Adresa = %u\n", str, str);
11
12 str = (char *)realloc(str, 13); //zmení veľkosť pridelenej pamäte zo 7 bajtov na 13 bajtov
13 strcat(str, ".info");
14 printf("Textovy retazec = %s, Adresa = %u\n", str, str);
15
16 free(str); //zruší pridelenie pamäte
17
18 return 0;
19 }
Výstup:
Textovy retazec = kiwiki, Adresa = 14313456 Textovy retazec = kiwiki.info, Adresa = 14313912