تفاوت new با malloc - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تفاوت new با malloc

0 امتیاز
سلام بر همگی

بچه ها کسی هست معلیب و مزایایی استفاده از حافظه دینامیک برام بگه و چه فرقی بین new و malloc وجود داره؟
سوال شده آذر 9, 1392  بوسیله ی hamidKhoram (امتیاز 33)   5 8
ویرایش شده آذر 10, 1392 بوسیله ی BlueBlade

1 پاسخ

0 امتیاز
مزایای استفاده از حافظه پویا:
 
  • انعطاف پذیری: تخصیص حافظه پویا امکان ایجاد ساختارهای داده با اندازه متغیر، مانند لیست ها و آرایه های پیوندی را فراهم می کند، که می توانند در صورت نیاز رشد یا کوچک شوند.
  • استفاده کارآمد از حافظه: تخصیص حافظه پویا به برنامه ها این امکان را می دهد که با تخصیص و تخصیص حافظه در صورت نیاز، به جای رزرو مقدار ثابتی از حافظه برای کل اجرای برنامه، به طور موثرتری از حافظه استفاده کنند.
  • سادگی: تخصیص حافظه پویا می تواند سازماندهی و مدیریت برنامه های پیچیده را با اجازه دادن به ایجاد ساختارهای داده و اشیاء پیچیده ساده کند.
 
معایب استفاده از حافظه پویا:
 
  • تکه تکه شدن: تخصیص و تخصیص مکرر حافظه می تواند منجر به تکه تکه شدن پشته شود، که می تواند باعث شود برنامه حتی زمانی که هنوز حافظه آزاد در دسترس باشد، حافظه اش تمام شود.
  • نشت حافظه: اگر حافظه تخصیص یافته به صورت پویا به درستی تخصیص داده نشود، می تواند باعث نشت حافظه شود که می تواند منجر به اتمام حافظه برنامه شود.
  • سربار: تخصیص حافظه پویا می تواند سربار را به یک برنامه اضافه کند، زیرا حافظه باید دائما مدیریت و سازماندهی شود.
 
تفاوت اصلی بین new و malloc() این است که new یک عملگر C++ است که نه تنها حافظه را تخصیص می دهد، بلکه سازنده شی را نیز فراخوانی می کند، در حالی که malloc() یک تابع کتابخانه C است که فقط حافظه را بدون فراخوانی سازنده اختصاص می دهد. علاوه بر این، new زمانی که نتواند حافظه را تخصیص دهد یک استثنا ایجاد می کند در حالی که malloc() یک اشاره گر تهی برمی گرداند.
 
به طور کلی، توصیه می شود هنگام کار با C++ از عملگر new و هنگام کار با C از تابع malloc() استفاده کنید.
پاسخ داده شده بهمن 7, 1401 بوسیله ی farshid_siyah (امتیاز 1,463)   3 11 16
...