«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
فرق یا تفاوت بین تابع malloc و calloc در زبان سی پلاس پلاس_اختصاص حافظه پویا در سی :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

قدیمیا دلم براتون تنگ شده... فقط معرفی کنید توی پیامک یا تماس یاد بیارید.
اگه جواب ندادم شاید موقعیت نداشته باشم.
بگید توی پیام از بچه های پرومیکرز هستید.

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

gameover.blog.ir


نام تابع توضیح
malloc یک مقدار مشخص از حافظه را به برنامه اختصاص می‌دهد.
realloc حافظه‌ای که قبلاً اختصاص یافته را افزایش یا کاهش می‌دهد. ممکن است احتیاج باشد حافظه دوباره اختصاص یابد.
calloc مقدار مشخصی از حافظه را اختصاص می‌دهد. اما آنها را با صفر مقداردهی می‌کند.
free حافظه اختصاص یافته را آزاد می‌کند و به سیستم باز می‌گرداند


مثال:

دستور زیر آرایه از ۱۰ عدد صحیح ایجاد می‌کند:

int array[10];

با این حال اندازه آرایه در زمان کامپایل مشخص می‌شود و ثابت است و در مان اجرا نمی‌تواند تغییر کند. برای اختصاص دادن یک آرایه با اندازه مشابه به صورت پویا می‌توان از این کد استفاده کرد:

/* Allocate space for an array with ten elements of type int. Some programmers place an optional "(int *)" cast before malloc. */
int * array = malloc(10 * sizeof(int));

/* Check if the memory couldn't be allocated; if it's the case, handle the problem as appropriate. */
if (NULL == array) {
    /* Handle error… */
}

/* If we get here, allocation succeeded. Do work… */

/* We are done with the array, and can free (release) the block of memory. */

free(array);

/* Make sure the freed pointer isn't used anymore by assigning it to NULL (or another allocated memory region). */
array = NULL;

در صورتیکه malloc موفق نشود حافظه خواسته شده را اختصاص دهد، مقدار NULL را برمیگرداند.

malloc یک اشاره گر void برمیگرداند. بدین معنی که این اشاره گر به فضایی با نوع داده نامشخص اشاره می‌کند. در سی ++ باید با استفاده از عملگر cast این اشاره گر را به نوع داده مورد نیاز تبدیل کرد. اما در زبان سی به این کار احتیاج نیست.



نکته های اضافی:

m به معنی memory یا حافظه می باشد.
alloc به معنی allocation یا اختصاص می باشد.
malloc یعنی memory allocation یا اختصاص حافظه موقع اجرا(این کار باعث میشه طول آرایه رو در لحظه ی تعریف،تعیین نکنیم و فقط در لحظه ی اجرا به میزان لازم و به تعداد ورودی ها تعریفش کنیم. به این کار می گن اختصاص حافظه پویا یا داینامیک مموری الوکیشن)



منبع: ویکی پدیا
موافقین ۰ مخالفین ۰ ۹۵/۰۷/۱۶
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی