سؤال

لماذا يتم استخدام كومة وقت التشغيل لتخصيص الذاكرة الديناميكي بلغات نمط C و هيكل البيانات كل من يسمى "كومة"؟ هل هناك بعض العلاقات؟

هل كانت مفيدة؟

المحلول

يقول دونالد كنوث (فن برمجة الكمبيوتر، الثالث إد.، المجلد 1، ص. 435):

بدأ العديد من المؤلفين حوالي عام 1975 للاتصال بجمع الذاكرة المتوفرة "كومة كومة".

إنه لا يقول المؤلفين ولا يعطون إشارات إلى أي أوراق محددة، لكنه يقول إن استخدام مصطلح "كومة" فيما يتعلق بخوذات الأولوية هو الشعور التقليدي للكلمة.

نصائح أخرى

لديهم نفس الاسم ولكنهم ليسوا متشابهين حقا (حتى من الناحية النظرية). يطلق على كومة الذاكرة كومة من كومة بنفس الطريقة التي ستشيرها إلى سلة الغسيل ك "كومة من الملابس". يستخدم هذا الاسم للإشارة إلى مكان فوضوي إلى حد ما، حيث يمكن تخصيص الذاكرة وتضخمها عند الإرادة. هيكل البيانات (كما يربط Wikipedia تراجع النقاط) مختلفة تماما.

اسم الاصطدام مؤسف، ولكن ليس كل ذلك غامض. كومة هي كلمة صغيرة مشتركة تستخدم تعني كومة، جمع، مجموعة، إلخ. استخدام كلمة هيكل البيانات قبل التواريخ (أنا متأكد تماما) اسم مجموعة الذاكرة. حقيقة، بركة سباحة كان سيكون اختيار أفضل بكثير لهذا الأخير، في رأيي. كومة يدل على هيكل عمودي (مثل كومة)، والذي يناسب بنية البيانات، ولكن ليس تجمع الذاكرة. لا نفكر في كومة بركة للذاكرة على أنها هرمية، في حين أن الفكرة الأساسية وراء بنية البيانات هي إبقاء العنصر الأكبر في الجزء العلوي من كومة الهيكل (وأكواك الفرعية).

يعود تعيين هيكل البيانات إلى منتصف الستينيات؛ كومة تجمع الذاكرة، أوائل السبعينيات. تم استخدام مصطلح كومة (معنى تجمع الذاكرة) على الأقل في وقت مبكر من عام 1971 Wijngaarden. في مناقشات الجول.

ربما في أقرب وقت ممكن كومة كما تم العثور على هيكل البيانات قبل سبع سنوات في
Williams، JWJ 1964. "الخوارزمية 232 - Heapsort"، اتصالات ACM 7(6): 347-348

في الواقع، القراءة حول طريقة تخصيص الذاكرة (انظر كتل الأصدقاء) يذكرني بكم كومة في هياكل البيانات.

IMO أنها مجرد حادث / صدفة أن هذين شيئين لا علاقة له تماما به نفس الاسم. انها مثل رسم بياني و رسم بياني.

يستخدم بنية البيانات التي يشبها الكومة من قبل خوارزمية العثور على تخصيص الذاكرة المتوفرة. ما يلي مقصور من http://www.cprogramming.com/tutorial/virtual_memory_and_heaps.html..

متي new يتم استدعاء، يبدأ البحث عن كتلة ذاكرة مجانية يناسب حجم طلبك. من المفترض أن يتم العثور على مثل هذه الكتلة من الذاكرة، يتم تمييزها على أنها محفوظة ومؤشر إلى هذا الموقع. هناك العديد من الخوارزميات لإنجاز ذلك لأنه يجب تقديم حل وسط بين مسح الذاكرة بأكملها لإيجاد أصغر كتلة حرة أكبر من حجم كائنك، أو إرجاع أول واحد حيث تحتاج الذاكرة إلى تناسبها. من أجل تحسين سرعة الحصول على كتلة من الذاكرة، يتم الحفاظ على المناطق المجانية والمحفوفة الذاكرة في بنية بيانات مماثلة للأشجار الثنائية تسمى كومة كومة.

لا يتم استخدام شروط Colloial Memory Stack وذاكرة الكومة في معيار C ++. يستخدم المعيار التخزين الثابت، تخزين مؤشر الترابط، التخزين التلقائي، والتخزين الديناميكي.

يمكن العثور على المزيد في قسم تخزين التخزين من المعيار.

وبالتالي، من وجهة نظر اللغة والمكتبة القياسية، لا يوجد أي ارتباك.

ما هو كومة الكومة؟ A. كومة هي مجموعة من الكائنات في أعلى بعضها البعض.

الإجابة على سؤالك: يستخدم كلا من كومة الذاكرة والكومة الثنائية نفس المفهوم كما تعلمون. يتم تخزين البيانات في شكل كومة كومة في الذاكرة بنفس الترتيب كما هو مكتوب في البرنامج، في حين أن الكومة الثنائية هي بنية بيانات تتبع نفس مفهوم تخزين البيانات بطريقة مرتبة في شكل كومة كومة (البيانات) من جهة أخرى). اسمحوا لي أن أعرف ما رأيك في قسم التعليقات.

ربما تم إدارة كومة الذاكرة الأولى المنفذة من قبل هيكل الكومة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top