تفاوت بین calloc و malloc

فهرست مطالب:

تفاوت بین calloc و malloc
تفاوت بین calloc و malloc

تصویری: تفاوت بین calloc و malloc

تصویری: تفاوت بین calloc و malloc
تصویری: Функции Malloc и Calloc в языке C: понимание ключевых различий 2024, نوامبر
Anonim

تفاوت کلیدی – calloc در مقابل malloc

در برنامه نویسی، ذخیره داده ها ضروری است. داده ها در حافظه ذخیره می شوند. این مکان های حافظه به عنوان متغیر شناخته می شوند. هر متغیر یک نوع خاص دارد. آنها می توانند اعداد صحیح، شناورها، دوتایی ها، کاراکترها و غیره باشند. همچنین ساختارهای داده ای وجود دارند که می توانند مجموعه ای متوالی با اندازه ثابت از عناصر از یک نوع را ذخیره کنند. یک آرایه است. برنامه نویس باید اندازه آرایه را اعلام کند. اگر برنامه نویس آرایه ای از اعداد صحیح را برای پنج عنصر اعلام کند، نمی توان مقداری را به شاخصی بالاتر از اندازه اعلام شده اختصاص داد. تخصیص حافظه ثابت است و در زمان اجرا نمی توان آن را تغییر داد.روش دیگر تخصیص حافظه، تخصیص حافظه پویا است. تخصیص حافظه پویا به تخصیص حافظه بیشتر در صورت نیاز و آزادسازی در صورت لزوم کمک می کند. فایل هدر چهار عملکرد برای تخصیص حافظه پویا دارد. calloc و malloc دو تابع از این قبیل هستند. تفاوت اصلی بین calloc و malloc در این است که calloc حافظه را تخصیص می دهد و همچنین بلوک های حافظه اختصاص داده شده را صفر می کند در حالی که malloc حافظه را تخصیص می دهد اما آن حافظه اختصاص داده شده را صفر نمی کند. دسترسی به محتوا در calloc صفر می‌دهد، اما malloc یک مقدار زباله می‌دهد.

کالوک چیست؟

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

تفاوت بین calloc و malloc
تفاوت بین calloc و malloc

شکل 01: calloc و malloc

calloc مخفف "تخصیص پیوسته" است. چندین بلوک حافظه را با همان اندازه اختصاص می دهد. نحو برای calloc به شرح زیر است. دو استدلال می خواهد. آنها تعداد بلوک ها و اندازه هر بلوک هستند. تابع calloc یک اشاره گر خالی برمی گرداند، بنابراین از یک عملگر cast برای نوع اشاره گر برگردانده شده مطابق با نوع داده مورد نیاز استفاده می شود.

voidcalloc(size_t num, size_t size);

به برنامه ساده C زیر مراجعه کنید.

شامل

شامل

int main(){

int ptr=(int) calloc(20, sizeof(int));

if (ptr==NULL){

printf("حافظه تخصیص داده نشده است");

}

دیگر{

printf("حافظه اختصاص داده شده است");

}

بازگشت 0;

}

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

اگر تخصیص حافظه موفقیت آمیز باشد، آدرس پایه بلوک حافظه را برمی گرداند. این بدان معناست که نشانگر ptr اکنون به آدرس پایه آن بلوک حافظه اشاره می کند. تمام مناطق اختصاص داده شده به صفر مقداردهی اولیه می شوند. پیام Memory Allocated را چاپ می کند. اگر تخصیص حافظه ناموفق باشد، نشانگر تهی را برمی گرداند. بنابراین، پیام حافظه تخصیص داده نمی شود چاپ می شود.

مالوک چیست؟

تابع malloc برای تخصیص مقدار مورد نیاز بایت در حافظه استفاده می شود. نحو برای malloc به شرح زیر است. اندازه نشان دهنده حافظه مورد نیاز در بایت است.

void malloc(size_t_size);

عملکرد malloc یک اشاره گر خالی برمی گرداند، بنابراین از یک عملگر cast برای نوع اشاره گر برگردانده شده با توجه به نوع داده مورد نیاز استفاده می شود.

به برنامه ساده C زیر با تابع malloc مراجعه کنید.

شامل

شامل

int main(){

int ptr=(int) malloc (10sizeof(int));

if (ptr==NULL){

printf("حافظه تخصیص داده نشده است");

}

دیگر{

printf("حافظه اختصاص داده شده است");

}

بازگشت 0;

}

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

شباهت‌های بین calloc و malloc چیست؟

  • هر دو این توابع در فایل هدر اعلام شده اند. این فایل هدر کتابخانه استاندارد است.
  • هر دو عملکرد برای تخصیص حافظه پویا استفاده می شوند.
  • اشاره‌گر بازگردانده شده توسط calloc و malloc باید در نوع خاصی ریخته شود.
  • در تخصیص موفقیت آمیز حافظه، هر دو تابع یک اشاره گر با آدرس پایه بلوک حافظه برمی گردانند.
  • اگر تخصیص حافظه ناموفق باشد، یک اشاره گر تهی برگردانده می شود.

تفاوت بین calloc و malloc چیست؟

calloc در مقابل malloc

calloc تابعی برای تخصیص حافظه پویا در فایل هدر stdlib.h زبان C است که تعداد مشخصی از بایت ها را تخصیص می دهد و آنها را صفر می کند. malloc تابعی برای تخصیص حافظه پویا در فایل هدر stdlib.h زبان C است که تعداد خاصی از بایت ها را اختصاص می دهد.
معنی
calloc مخفف تخصیص پیوسته است. malloc مخفف تخصیص حافظه است.
Syntax
calloc از نحوی شبیه void calloc(size_t_num, size_t size); پیروی می کند malloc از نحوی شبیه void malloc(size_t_size) پیروی می کند.
تعداد استدلال
calloc دو آرگومان می گیرد. آنها تعدادی بلوک و اندازه هر بلوک هستند. malloc یک آرگومان می گیرد. این تعدادی بایت است.
سرعت
calloc کمی بیشتر از malloc طول می کشد. این به دلیل مرحله اضافی اولیه سازی حافظه اختصاص داده شده با صفر است. malloc سریعتر از calloc است.

خلاصه - calloc در مقابل malloc

در تخصیص حافظه ایستا مانند استفاده از آرایه ها، حافظه ثابت است. اگر عناصر کمی ذخیره شوند، بقیه حافظه تلف می شود. همچنین ممکن است زمانی که حافظه اختصاص داده شده کوچکتر از حافظه مورد نیاز باشد، خطا ایجاد کند. بنابراین از تخصیص حافظه پویا استفاده می شود. در زبان C، calloc و malloc تخصیص حافظه پویا را ارائه می دهند. تفاوت بین calloc و malloc در این است که calloc حافظه را تخصیص می دهد و همچنین بلوک های حافظه اختصاص داده شده را صفر می کند در حالی که malloc حافظه را اختصاص می دهد اما بلوک های حافظه را صفر نمی کند. Malloc دو آرگومان می گیرد در حالی که calloc دو آرگومان می گیرد.

دانلود PDF بازی calloc vs malloc

می توانید نسخه PDF این مقاله را دانلود کنید و طبق یادداشت استنادی از آن برای اهداف آفلاین استفاده کنید. لطفا نسخه PDF را از اینجا دانلود کنید: تفاوت بین calloc و malloc

توصیه شده: