malloc
Her hangi bir veri tipinde yer ayırma işlemi yapar. Ayrıca içeriği boş bir değer atanır. Başarılı ise atanan değişkende yer ayırma işlemi gerçekleşir. Başarısız ise NULL olarak dönüş yapar.
void* malloc(size_t size)Params
- size: Ayrılacak alan boyutu
#include <stdio.h>
int main(int argc, char** argv)
{
char* buffer;
int i = 22;
buffer = (char*)malloc(i + 1);
if(buffer == NULL) return -1;
for(int n = 0; n < i; n++)
buffer[n] = n + 1 * 'a';
buffer[i] = '\0';
printf("Random String: %s", buffer);
free(buffer);
return 0;
}realloc
Her hangi bir veri tipinde yer ayırma işlemi yapıldıktan sonra yeniden boyutlandırma yapılması için kullanılır. Başarılı ise atanan değişkende yeniden boyutlandırma işlemi gerçekleşir. Başarısız ise NULL olarak dönüş yapar.
void* realloc(void* memory, size_t size);Params
- memory: Daha önce ayrılmış bellek
- size: Yeniden boyutlanacak miktar.
#include <stdio.h>
int main(int argc, char** argv)
{
float* ptr;
float* new_ptr;
ptr = (float*)malloc(5 * sizeof(float));
if(ptr == NULL) return -1;
for(int i = 0; i < 5; i++)
ptr[i] = i * 1.5;
new_ptr = (float*)realloc(ptr, 10 * sizeof(float));
if(new_ptr == NULL) return -1;
for(int i = 0; i < 10; i++)
new_ptr[i] = i * 2.5;
for(int i = 0; i < 5; i++)
printf("%f ", ptr[i]);
printf("\n");
for(int i = 0; i < 10; i++)
printf("%f ", new_ptr[i]);
return 0;
}calloc
Array veri tipin de bir yer ayırma işlemi yapar. Ayrıca içerisini sıfır ile doldurur. Başarız durumunda NULL olarak döner.
void* calloc(size_t num, size_t size);Params
- num: Oluşturulucak element sayısı
- size: Veri tipi boyutu
#include <stdio.h>
int main(int argc, char** argv)
{
int* ptr;
ptr = (int*)calloc(22, sizeof(int));
for(int i = 0; i < 22; i++)
printf("%d ", ptr[i]);
free(ptr);
return 0;
}free
realloc, calloc ve malloc ile oluşturulan bellekleri serbest bırakır.
void free(void* memory);Params
- memory: Daha önce ayrılmış bellek