Функцията резервира блок от памет с размер броя на байтовете зададени в size и връща указател от тип void съдържащ адреса на първия байт в блока. Преди всеки блок се разполага структура с информация за него. Това може да доведе до силно фрагментиране на паметта, при заделянето на множество малки блокове.
Указва броя баитове който ще бъдат заделени.
Функцията връща указател към блока или NULL ако паметта не може да бъде заделена.
| от: adviser at cpp-examples dot com | Свали кода във файл |
#include <stdio.h> #include <stdlib.h> int main() { int *n = (int*)malloc(sizeof(int)); *n = 5; printf("%d", *n); //5 free(n); return 0; }
| от: adviser at cpp-examples dot com | Свали кода във файл |
#include <stdio.h> #include <stdlib.h> int main() { int *n = (int*)malloc(sizeof(int)*20); //заделя масив от тип int с 20 елемента for(int i=0; i<20; i++) n[i] = i; for(int j=0; j<20; j++) printf("%d", n[j]); free(n); return 0; }
| от: adviser at cpp-examples dot com | Свали кода във файл |
#include <stdio.h> #include <stdlib.h> struct Name { char first[20]; char second[20]; char last[20]; }; int main() { Name *p = (Name*)malloc(sizeof(Name)); //заделя памет за един обект от тип Name if(p != NULL) { scanf("%s %s %s", p->first, p->second, p->last); printf("%s %s %s", p->first, p->second, p->last); free(p); } return 0; }
| от: adviser at cpp-examples dot com | Свали кода във файл |
/* Заделя от динамичната памет за няколко прости променливи */ #include <stdio.h> #include <stdlib.h> int main() { int *iPtr; float *fPtr; char *myName; iPtr = (int*)malloc(sizeof(int)); fPtr = (float*)malloc(sizeof(float)); myName = (char*)malloc(20 * sizeof(char)); *iPtr = 25; *fPtr = 3.14159; printf("Какво е вашето име:"); gets(myName); printf("Стойности на променливите:\n"); printf("iPtr: %d.\n", *iPtr); printf("fPtr: %f.\n", *fPtr); printf("myName: %s\n", myName); free(iPtr); free(fPtr); free(myName); return 0; }
Тъй като функцията връща указател от тип void е необходимо да бъде използвана операция за преобразуване ако е нужен указател към друг тип.
calloc - заделя парчета от памет
realloc - променя размера на предишно заделена памет
free - връща паметта на операционната система