موسسه خیریه محک

شهر ریاضی بازی-ریاضی

فرق تخصیص حافظه پویا در C و C++؟

0 امتیاز
1,238 نمایش

تفاوت‌های اصلی تخصیص حافظه‌ی پویا در C یا همون malloc و C++ یا همون new چیه؟ و آیا در برنامه‌های C++ هم نیازی به استفاده از نوع اولی خواهد بود یا نه؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده پنجشنبه ۸ فروردین ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

در C هنگامی که فضایی رو از حافظه‌ی heap درخواست می‌کنیم، هیچ نوعی برای اون در نظر نمی‌گیریم. فقط تعدادی بیت پشت سر هم رو از حافظه می‌گیریم. بعد با کد برنامه‌نویسی نوع اون رو تعیین می‌کنیم

void* buffer;
char *s;
buffer = malloc(10);
s = buffer;
s[0] = 'H';

اما در C++ همون وقتی که یه حافظه می‌گیریم نوعش رو هم تعیین می‌کنیم.

char *s;
c = new char[10];

به طور کلی new خوشد با malloc پیاده‌سازی شده و کنترل‌های بیشتری روش اعمال می‌شه. بنابراین به عنوان یک برنامه‌نویس اگه نیازتون رو برآورده می‌کنه از new استفاده کنین.
استفاده از روش C گاهی امکانات بیشتری به برنامه‌نویس می‌ده ولی کنترل بیشتری رو هم درخواست می‌کنه.

تفاوت دیگه امکان سربارگذاری new هست که ‍malloc این امکان رو نداره.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده سه شنبه ۱۰ اردیبهشت ۱۳۹۲ توسط prodo