Free-Store vs Heap: هل هي كيانات مميزة في لغة C؟
في لغة C، المصطلحان "متجر مجاني" و"كومة" " غالبًا ما يتم استخدامها بالتبادل للإشارة إلى منطقة الذاكرة حيث تتم إدارة التخصيصات الديناميكية. ومع ذلك، من الضروري أن نفهم ما إذا كان هناك اختلاف عملي بين هذه المصطلحات.
التمييز المفاهيمي
تاريخيًا، كان المتجر المجاني عبارة عن منطقة الذاكرة المخصصة للتخصيص ديناميكيًا الكائنات باستخدام عوامل التشغيل "الجديدة" و"الحذف". من ناحية أخرى، كانت الكومة عبارة عن منطقة منفصلة يستخدمها "malloc" و"free" لتخصيص الذاكرة على مستوى أدنى. يهدف هذا التمييز إلى منع الخلط بين آليات إدارة الذاكرة المختلفة والتعارضات المحتملة.
منظور المترجم
في تطبيقات C الحديثة، أصبح التمييز بين المتجر الحر والكومة إلى حد كبير المفاهيمي. عادة لا يقوم المترجمون بالتمييز العملي بين المصطلحين. يخصص كل من "الجديد" و"malloc" الذاكرة من نفس نظام إدارة الذاكرة الأساسي.
استخدام الذاكرة
على الرغم من أنه ممكن من الناحية النظرية، فمن غير المرجح أن يقوم المترجم بتخصيص الذاكرة لـ "جديد" و"malloc" في مساحات ذاكرة منفصلة. تقوم كلتا الآليتين بتخصيص الذاكرة داخل نفس منطقة الكومة. ومع ذلك، تجدر الإشارة إلى أن بعض مترجمات لغة C قد توفر خيارات خاصة بالمترجم تسمح لك بتخصيص الذاكرة من مناطق كومة محددة. "المتجر المجاني" و"الكومة" متكافئان وظيفيًا في لغة C. يشير كلاهما إلى نفس منطقة الذاكرة المستخدمة لتخصيص الذاكرة الديناميكية. يعد التمييز بين المصطلحين في المقام الأول بمثابة تذكير للفصل بين استخدام "جديد/حذف" و"malloc/مجاني" لتنظيم التعليمات البرمجية بشكل صحيح. إنه ليس تقسيمًا صارمًا يؤثر على السلوك الفعلي لتخصيص الذاكرة في لغة C .
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3