السلام عليكم ورحمة الله وبركاته
بفرض كان لدينا كائنان مرجعيان a,b ومحليان في إجراء معين وكان الكائن a يحوي على الحقل c من نفس نوع الكائن b وكان الكائن b يحوي على الحقل d من نفس نوع الكائن a
الآن إذا كان الإجراء يحوي على الكود التالي
a.c=b b.d=a
الآن عند إنتهاء الإجراء يتم إزالة المتحولان (الذين يحويان عناوين الذاكرة للكائنات) من الذاكرة ولكن الكائنات تبقى في الذاكرة بسبب أن كل كائن من هاذان الكائنان مؤشر عليه من قبل حقل في الكائن الآخر ولا يتم إزالة الكائنات من الذاكرة إلا عندما يصبح عدد المؤشرات عليه مساوياً للصفر
ما هي فائدة بقاء الكائنان في الذاكرة رغم إنهما كائنان محليان في إجراء قد إنتهى وأن المبرمج لم يعد بحاجة لهما ؟
هل هناك حل لهذه المشكلة غير الحل التقلدي القاضي بجعل أحد حقول الكائنان المذكوران التي تؤشر على الكائن الآخر تساوي nothing وخاصة إذاكان الكائنات كثيرة ومتعددة ومتشعبة ومتداخلة ومن المضني القيام بهذا الحل التقليدي...
وهل هنالك طريقة لتفريغ Garbage collection عند الطلب..
ودمتم في أمان الله
السلام عليكم ورحمة الله وبركاته