Ayrılmış yaddaş boşdur?

Mündəricat:

Ayrılmış yaddaş boşdur?
Ayrılmış yaddaş boşdur?
Anonim

Malloc və calloc funksiyalarından istifadə edərək ayrılmış yaddaş öz-özünə ayrılmır. Beləliklə, dinamik yaddaş ayrılması baş verdikdə pulsuz metod istifadə olunur. Yaddaşın boşaldılması ilə onun itkisini az altmağa kömək edir.

Ayrılmış yaddaş necə boşaldılır?

C dilində malloc kitabxana funksiyası yığında yaddaş blokunu ayırmaq üçün istifadə olunur. Proqram bu yaddaş blokuna malloc-un qaytardığı göstərici vasitəsilə daxil olur. Yaddaşa ehtiyac qalmadıqda göstərici boş nöqtəsinə ötürülür, bu da yaddaşı başqa məqsədlər üçün istifadə etmək üçün boşaldır.

Ayrılmış yaddaşı boş altmasanız nə olacaq?

Əksər hallarda proqramdan çıxmazdan əvvəl yaddaşın yerini boş altmaq mənasızdır. Əməliyyat sistemi hər halda onu geri alacaq. Pulsuz ölü obyektlərə toxunacaq və səhifələnəcək; OS etməyəcək. Nəticə: Ayrılmaları hesablayan "sızma detektorları" ilə diqqətli olun.

Yaddaşın ayrılması bahadır?

Böyük yaddaş bloklarının ayrılması və boşaldılması xərclərinin sadəlövh ölçülməsi belə nəticəyə gələ bilər ki, bu, hər bir ayırma/pulsuz cüt üçün təxminən 7,5 μs başa gəlir. Bununla belə, böyük ayırmalar üçün MB başına üç ayrı xərc var.

Bəlidirsə, ayrılmış yaddaş yerini yenidən boşalda bilərmi?

Realloc funksiyası aşağıdakı qaydalara əsasən old_blk tərəfindən müəyyən edilmiş yaddaş blokunu ayırır, yenidən bölüşdürür və ya boşaldır: Əgər old_blk NULL olarsa, bayt ölçüsündə yaddaşın yeni bloku edirayrılmışdır. Ölçü sıfırdırsa, köhnə_blk tərəfindən göstərilən yaddaşı buraxmaq üçün pulsuz funksiya çağırılır.

Tövsiyə: