SORU
18 Mart 2014, Salı


Şimdiye kadar *OK* ücretsiz kullanım() ayrılmış bellek?

Bilgisayar Mühendisliği okuyorum, ve bazı elektronik dersleri var. free() işlevi (malloc(), calloc(), vb.) kullanarak önlemek için mümkün olduğunu, benim Profesör iki kişiden duydum (bu ders) hafıza boşlukları tahsis muhtemelen yine başka bir bellek ayırmak için kullanılan olmayacak çünkü. Yani 4 bayt tahsis ve onları serbest bırakın, örneğin, büyük olasılıkla yeniden tahsis olmaz bu alanı 4 bayt olacaktır: a . olacak ^em>delik.

Bu çılgınlık bence: olmaz-oyuncak-programnerede bırakmadan yığın bellek ayrılamadı. Ama malloc() free() olmalı o kadar önemli tam olarak açıklayacak bilgiye sahip değilim.

Yani: hiç free() kullanmadan malloc() bir kullanım için uygun olabilir durumlar vardır? Ve eğer öyleyse, ne hocalarım bunu açıklayabilir miyim?

CEVAP
18 Mart 2014, Salı


Kolay: sadece hemen hemen yarı ciddi malloc()/free() herhangi bir uygulama kaynağı okuyun. Bu sayede, çağrı iş kolları memory manager gerçek yani. Bu çalışma zamanı kitaplığı, sanal makine, ya da işletim sistemi olabilir. Ders Kodu her durumda eşit derecede erişilebilir.

Bellek parçalanma olmadığından emin yapma, daha büyük deliklere bitişik delikler katılarak, çok yaygındır. Daha ciddi bir oran bunu sağlamak için daha ciddi tekniklerini kullanır.

Yani, diyelim üç ayırmalarını ve de-ayırma ve bloklar bu sırada bellekte koydu çık varsayalım:

 - - - 
|A|B|C|
 - - - 

Tek tek ayırma boyutları önemli değil. o zaman size ücretsiz ilk ve son kişi, A ve C:

 - - - 
| |B| |
 - - - 

sonunda B serbest zaman, (başlangıçta, en azından teorik olarak) bitiş:

 - - - 
| | | |
 - - - 

sadece içine de parçalanmış olabilir

 - - - 
|     |
 - - - 

yani büyük bir serbest Blok, no parçaları Sol bir tek.

İstenen: olarak başvuruyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • theatre2film

    theatre2film

    12 NİSAN 2006
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009