الهام عابدی / وب مستر
یک کامپیوتر ساینتیست نه به معنای واقعی ولی چیزی که می خواهد شبیه آن شود بلکه شبیه تر! خوش آمدید

بایگانی برای شهریور, ۱۳۹۷

کاستی های زبان ++C و ایده ها

c++

در حال حاضر که تنوع زبان های برنامه نویسی و توسعه ی آن نسبت به گذشته در حال افزایش است. می توان با توجه به قابلیت های جدید دیگر زبان های به نسبت نوپا و سادگی بعضی از آن ها مانند زبان پایتون،به کاستی های زبان ++C پرداخت. زبانی که در شروع برنامه نویسی با آن آشنا شدیم.

یکی از بزرگترین مشکلات امنیتی که در خصوص این زبان وجود دارد سرریز بافر است. بافر قسمتی از حافظه است که به طور موقت؛ برای نگه داری اطلاعات یک نرم افزار اختصاص یافته است. حال برنامه ای بافری با سایز ثابت دارد، اگر بیش از این مقدار؛ دیتا برای این بافر ارسال شود، بافر سرریز می شود. حملات سرکوب و پشته رایج ترین نوع این حملات است.

++C ویژگی مدیریت حافظه از طریق garbage collection یا جمع آوری زباله را دارا نیست. در واقع توسط این ویژگی، حافظه ی اشغال شده ی بدون مصرف برنامه، آزاد می شود.

زبان ++C تخصیص حافظه ی پویا را پشتیبانی نمی کند. موضوعی که مطرح است در حالت ایستا چه متغیرها استفاده شوند چه مورد استفاده قرار نگیرند در مدت زمان اجرای برنامه در حافظه باقی می مانند. اینجا نیاز به مدیریت عمر حافظه هست. اختصاص حافظه به صورت پویا حافظه را با انعطاف بیشتری مدیریت می کند. مثلا در زبان دیگری؛ این کار، با اختصاص دادن یک بلاک از حافظه در فضای heap ( فضایی که در اخت‍يار هيچ برنامه ای نيست و می تواند به صورت پويا استفاده شود)، توسط تابع کتابخانه ای موجود در آن زبان (تابع  malloc در C) صورت می گیرد. برنامه از طریق اشاره گر به این فضا دسترسی دارد تا پس از اتمام کار با حافظه، با ارسال اشاره گر به تابع free، حافظه به سیستم برگردانده شود. که زبان ++C از این نوع تابع کتابخانه ای برخوردار نیست.

(بیشتر…)