در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
این مشکلات که از آن بهعنوان باگهای نرمافزاری سیستم یاد میشود، باعث ایجاد نرمافزارهای دیباگی شد که روی حافظه فعالیت میکردند و این نشتها را تشخیص میدادند. نرمافزارهایی چون BoundsChecker، Valgrind، Insure++ و memwatch برخی از همین ابزارهای دیباگ بودند.
زبانهای جاوا، سیشارپ، لیسپ و VB.NET قابلیت جمعآوری خودکار آشغال را دارند، اما در مقابل نشت حافظه مصون نیستند. برای مثال ممکن است یک برنامه در یک حلقه نامتنهای، اشیایی با رفرنسی از جنس خود بسازد که باعث میشود بخش زیادی از حافظه از دسترسی خارج گردد.
نشت حافظه، بهطور کلی با الگوریتم زیر بهسادگی قابل درک خواهد بود:
فرض کنید که ما اکنون روی پله شماره X ایستادهایم و هدف، پله شماره Y است. الگوریتم بهاین صورت انجام میشود که وقتی دکمهای فشار داده شد
تکهای حافظه تخصیص داده شود و برای بهخاطر سپردن شماره پله استفاده شود.
شماره پله داخل آن بخش از حافظه قرار داده شود.
آیا روی پله هدف ایستادهایم؟
اگر چنین است، کاری برای انجام دادن نیست. پایان.
در غیر اینصورت:
تا زمانی که پاها آزاد شوند باید صبر کنیم.
به پله مورد نظر برویم و حافظهای که دریافت کردهایم را آزاد کنیم.
در نگاه اول الگوریتم بدون نقص بهنظر میرسد، اما وقتی دقت کنیم، در صورتی که 200 بار پیغام درخواست به ماندن در همان پله اعلام شود، از آنجایی که در حالت درستی شرط، حافظه را آزاد نکردهایم، 200 خانه حافظه، بدون رفرنس باقی خواهد ماند و نشت عظیمی رخ خواهد داد.
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: