💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Blue
آرایه قبلی که ازش کپی شده، حذف میشه یا تو حافظه میمونه؟
جامعه گولنگ ایجاد شده در ۱۷ بهمن ۱۴۰۲

وقتی ظرفیت پر میشه گفتیم یه آرایه جدید با طول دوبرابر ساخته میشه و آرایه قبلی توش کپی میشه، سوالم اینه که آرایه قبلی که ازش کپی شده، حذف میشه یا تو حافظه میمونه؟

سلام،

آرایه قبلی حذف نمیشه، slice یک مرجع (reference) به آرایه اولیه است. وقتی ما slice جدید می‌سازیم، آرایه جدیدی ایجاد می‌شود و داده‌ها از آرایه قبلی به آن کپی می‌شود. اما خود آرایه اولیه همچنان دست نخورده باقی می‌ماند.

بنابراین آرایه اولیه تا زمانی که مرجع دیگری به آن وجود داشته باشد، در حافظه باقی خواهد ماند. تنها راه حذف آن این است که همه مرجع‌ها به آن قطع شوند تا توسط Garbage Collector حذف گردد.

محسن موحد ۱۷ بهمن ۱۴۰۲، ۱۰:۳۴