جار التحديث ...
جار التحديث ...

ما الفرق بين النسخ السطحي والنسخ العميق؟

  • 1

بالانجليزية هم الShallow Cop والDeep Copy

إجابات المستخدمين (1)


  • مسؤول
  • قديم العهد
  • قبل أشهر 4

مرحبا.

لنفترض التالي:

لديك متغير في الذاكرة، لنفترض ان اسمه متغير "أ". تريد نسخه ولصقه في متغير "ب".

اعتبر الذاكرة عبارة عن خزنة فيها العديد من الرفوف. قيمة المتغير "أ" كانت موجودة بالرف رقم 7 على سبيل المثال.

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

اما النسخ العميق، فهو يعمل كالتالي: عندما تقوم بنسخ محتوى المتغير "أ" الى المتغير "ب"، يأخذ النظام كل ما هو موجود في مكان تخزين ذاكرة المتغير "أ" ويضعها في مكان آخر، بحيث أن كل متغير يشير الى مكان مختلف في الذاكرة. افترض ان المتغير "أ" يشير الى الرف رقم 7. عند نسخه، ينسخ النظام محتوى الرف 7، ويضعه في الرف 12 على سبيل المثال. المتغير "أ" يشير الآن الى الرف رقم 7، في حين ان المتغير "ب" يشير الى الرف رقم 12. كلا المتغيرين لديهم نفس القيمة، لكن هذه القيمة محفوظة بمكانين مختلفين بالذاكرة. اذا تغيرت قيمة أحد المتغيرات، المتغير الثاني لن يتأثر.




  • 1
رد على التعليق (0)

الردود :


لا يوجد ردود بعد


سجل الدخول لاضافة رد
سجل الدخول لاضافة اجابة جديدة