Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <stdlib.h> > aligned_alloc

aligned_alloc() fonksiyonu

Bildirim

void *aligned_alloc(size_t alignment, size_t size); (C11)

Açıklama

Bellek başlangıç adresi değeri alignment parametre değerinin katı olan ve size parametre değeri kadar büyüklükte bellek tahsis eder. Size parametre değeri alignment parametre değerinin katı olmalıdır.

Size parametre değeri kadar büyüklükte tahsis edilen belleğin başlangıç adresinin alignment değerinin katı olması garanti edilir.

Parametreler

alignment: Tahsis edilecek belleğin başlangıç adresinin katlarını belirleyen değeri gösterir.

size: Ayrılacak byte miktarını gösteren bir değerdir. Alignment parametre değerinin katı olmalıdır.

Dönüş değeri

Başarı durumunda, yeni ayrılan belleğin başlangıç değerini gösteren bir işaretçi geri döndürür. Bellek kullanımı sona erdikten sonra, geri döndürülen işaretçi free() veya realloc() fonksiyonu ile boşaltılmalıdır.

Hata durumunda, NULL bir işaretçi geri döndürülür.

Örnek


#include <stdio.h>
#include <stdlib.h>

int main (void)
{
    char *cp1 = malloc(100*sizeof(cp1));
    printf("Ön tanımlı bellek miktarına göre tahsis edilen bellek başlangıç adresi: %p\n", (void*)cp1);
    free(cp1);

    char *cp2 = aligned_alloc(256, 256*sizeof(cp2));
    printf("256 byte bellek miktarına göre tahsis edilen bellek başlangıç adresi: %p\n", (void*)cp2);
    free(cp2);

    return 0;
}

Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:

Ön tanımlı bellek miktarına göre tahsis edilen bellek başlangıç adresi: 0x5565a231d260
256 byte bellek miktarına göre tahsis edilen bellek başlangıç adresi: 0x5565a231e600

Yukarıdaki program, malloc() fonksiyonu ile yaptığı bellek tahsisinde bellek başlangıç adresini sistem ön tanımlı kat değerine uygun olarak, aligned_alloc() fonksiyonu ile yaptığı bellek tahsisinde ise, 256 değerinin katı olacak şekilde belirler.