Malloc (jazyk C): Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 30: Riadok 30:
 
char *str;
 
char *str;
  
str = (char *)malloc(7); //pridelí pamäť s veľkosťou 7 bajtov smerníku str
+
        str = (char *)malloc(7);             //pridelí pamäť s veľkosťou 7 bajtov smerníku str
strcpy(str, "kiwiki");
+
strcpy(str, "kiwiki");
 
printf("Textovy retazec = %s,  Adresa = %u\n", str, str);
 
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
+
        str = (char *)realloc(str, 13);       //zmení veľkosť pridelenej pamäte zo 7 bajtov na 13 bajtov
 
strcat(str, ".info");
 
strcat(str, ".info");
 
printf("Textovy retazec = %s,  Adresa = %u\n", str, str);
 
printf("Textovy retazec = %s,  Adresa = %u\n", str, str);
  
free(str); //zruší pridelenie pamäte
+
        free(str);                           //zruší pridelenie pamäte
  
 
return(0);
 
return(0);

Verzia zo dňa a času 22:03, 19. máj 2020

Rozdelenie funkcií jazyka C podľa knižníc, v ktorých sú definované
<ctype.h> <limits.h> <stdio.h> <stdlib.h> <math.h> <string.h> <time.h>

isalnum
isalpha
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit

printf
scanf
getc
putc
getchar
putchar
fprintf
fscanf
fgetc
fputc
fopen
fclose
feof

system
malloc
qsort
rand
srand
atoi
atol
atof
itoa
div
abs
labs

pow
fabs
exp
log
log10
sqrt
ceil
sin
cos

strlen
strcmp
strchr
strcpy
strstr
strcat
strncat

clock
time

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

Referencie