Evet, bir Bilgisayar sistemleri kursu alıyorum. Malloc uygulamak için çeşitli tahsis şemaları hakkında birkaç sorum vardı. Açık listeler için, LIFO benzeri bir yığın kullanarak malloc uygularsam, önceki boş belleğe işaretçilerin sahip olma amacı nedir? Niçin çift bağlantılı listelere ihtiyacın var? Birbiriyle bağlantılı bağlantılar listesi de işe yaramaz mıydı?Malloc Ayırma Şemaları
Malloc lecture. Bu bağlantıyı çevrimiçi buldum, neden bahsettiğimi görmek için slayt 7'ye bakabilirsiniz.
Ayrılmış bir liste ayırma düzenine bakarken, bu listeler tek yönlü doğru mu? Ve ayrıca, birleştirme mekanizması tam olarak nedir? Örneğin, 4 kelime serbest bırakılırsa, önce ilgili ayrılmış ayrılmış listeye geri eklemeden önce çevrenizdeki boş alan olduğunda onu denemeyi dener misiniz? Yoksa, 4 ayrılmış kelimeyi ilgili ayrılmış listenin '4 word' bölümüne yerleştirir misiniz?
Teşekkür ederiz.
Sanırım ne söylediğinizi görüyorum ama sondaki işaretçiyi devam ettirme ihtiyacının olmaması konusunda daha fazla detay verebilir misiniz? Ayrıca, eğer serbest bir blok B'yi çağırırsam B-> next-> prev = B? Çünkü durum böyle değilse, bağlantılı listelerin ne kadar yardımcı olabileceğini görmüyorum. Ayrıca, yığının ayrılmış bir liste ayırıcısında başlatılmasının en iyi yolu ne olurdu? Sayfayı bir düzende bölümler misiniz? (2 kelime 64 serbest blok, 4 kelimeden 64 serbest blok, 8 kelime 64 blok ... belirtilen sonsuzluk kategorisine gelene kadar ... Ya da başlangıçta daha iyi bir yol var mı? – de1337ed
@ de1337ed: Belki de herhangi bir düğüm listesi işlem kodu yazılmamış mı? Bir girdap ver: bağlantılı bir listeye bir düğüm ekleyen bir işlev yaz.Listeyi adres = sıralanmış sırayla saklayın. Tek tek bağlı olarak deneyin. Ve sonra çift bağlantılı için değiştirin. (Sorunuzu cevaplamak için 'B-> next-> prev' * her zaman * B) Eğer değilse, bir hata vardır.) Yığının başlatılması uygulayıcının politika kararlarına tabidir: bir grup 512 baytlık bloklar gitmeye hazır mı? Sisteme bağlı. – wallyk