Sic Parvis Magna

30 Ağustos 2024 Cuma

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #7

Ağustos 30, 2024 Posted by unexpected , , No comments

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.

Syntax
void* malloc(size_t size)

Params

  • size: Ayrılacak alan boyutu
example.cpp
#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.

Syntax
void* realloc(void* memory, size_t size);

Params

  • memory: Daha önce ayrılmış bellek
  • size: Yeniden boyutlanacak miktar.
example.cpp
#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.

Syntax
void* calloc(size_t num, size_t size);

Params

  • num: Oluşturulucak element sayısı
  • size: Veri tipi boyutu
example.cpp
#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.

Syntax
void free(void* memory);

Params

  • memory: Daha önce ayrılmış bellek

0 comments:

Yorum Gönder