الانتقال إلى المحتوى الرئيسي

ما هو مالوك: شرح وأمثلة لكيفية عمل وظيفة في لغة البرمجة

مالوك هي وظيفة في ج / ج language لغة البرمجة التي تستخدم لتخصيص كتلة من الذاكرة أثناء تنفيذ البرنامج. باستخدام هذه الوظيفة ، يمكنك طلب عدد معين من وحدات البايت من الذاكرة التي سيستخدمها برنامجك لتخزين البيانات.

تأخذ وظيفة مالوك وسيطة واحدة كمدخل-الحجم بالبايت الذي يجب تخصيصه. فإنه يبحث عن كتلة خالية من الذاكرة من حجم كاف وإرجاع مؤشر إلى بداية هذه الكتلة. إذا تعذر تخصيص الذاكرة ، تقوم الدالة بإرجاع مؤشر فارغ.

للعمل مع الذاكرة المخصصة في البرنامج ، يمكنك استخدام المؤشر المستلم. لتحرير الذاكرة التي قمت بتخصيصها باستخدام مالوك ، يجب عليك استخدام وظيفة الحرة عن طريق تمريرها مؤشر إلى بداية الكتلة. يتيح لك ذلك إعادة الذاكرة إلى تجمع مشترك وتحريرها للتخصيصات اللاحقة.

В этом примере мы использовали malloc для выделения памяти под пять элементов типа int. ثم ملأنا كتلة الذاكرة هذه بقيم من 0 إلى 4 وعرضناها على الشاشة. بعد الاستخدام ، قمنا بتحرير الذاكرة باستخدام الوظيفة المجانية.

  1. ما هو مالوك وكيف يعمل?
  2. تعريف مالوك
  3. أمثلة على استخدام مالوك
  4. كيف يعمل مالوك بلغة برمجة?
  5. سؤال وجواب
  6. لماذا أحتاج إلى وظيفة مالوك في لغة البرمجة?
  7. ما هو نوع البيانات التي تعود وظيفة مالوك?
  8. يمكنك إعطاء مثال على كيفية عمل وظيفة مالوك?

ما هو مالوك وكيف يعمل?

مالوك هي وظيفة تستخدم في لغة البرمجة لطلب الذاكرة الديناميكية من نظام التشغيل. مع مالوك ، يمكنك تخصيص مقدار الذاكرة التي تحتاجها أثناء تنفيذ البرنامج.

عند بدء تشغيل البرنامج ، يتم تخصيص كمية معينة من الذاكرة تلقائيا لتخزين المتغيرات والبيانات. ومع ذلك ، في بعض الأحيان تكون هناك حاجة إلى مساحة إضافية للاستخدام المؤقت أو لحفظ البيانات. هو لمثل هذه المهام التي تم تصميم وظيفة مالوك.

مثال على استخدام وظيفة مالوك:

# تشمل 

# تشمل

كثافة العمليات الرئيسية () {

إنت * بتر;

// تخصيص الذاكرة لـ 5 قيم صحيحة

بتر = (إنت*) مالوك (5 * حجم (إنت));

إذا (بتر = = لاغية) {

برينتف ("ذاكرة غير كافية

");

خروج (1);

}

// تعيين القيم إلى صفيف

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

بتر [أنا] = أنا + 1;

}

// إخراج قيم الصفيف

برينتف ("قيم الصفيف:");

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

برينتف ("٪د" ، بتر [ط]);

}

// تحرير الذاكرة

مجانا (بتر);

العودة 0;

}

في المثال أعلاه ، نستخدم دالة مالوك لتخصيص ذاكرة لـ 5 قيم صحيحة. ثم نملأ المصفوفة بقيم من 1 إلى 5 ونعرضها على الشاشة. بعد ذلك ، نقوم بتحرير الذاكرة المخصصة باستخدام الوظيفة المجانية. هذا مهم لمنع تسرب الذاكرة.

تقوم دالة مالوك بإرجاع مؤشر إلى البايت الأول من الذاكرة المخصصة ، أو لاغية إذا تعذر تنفيذ الطلب. لذلك ، قبل استخدام الذاكرة المخصصة ، تحتاج إلى التحقق مما إذا كان التخصيص ناجحا. إذا تم إرجاع فارغة ، فهذا يعني أنه لا توجد ذاكرة كافية ويجب أن يتخذ برنامجك الإجراء المناسب. يجب عليك أيضا تحرير الذاكرة المخصصة باستخدام الوظيفة المجانية عندما لا تكون هناك حاجة إليها لتجنب تسرب الذاكرة.

باستخدام وظيفة مالوك يسمح البرنامج الخاص بك لتكون أكثر مرونة وكفاءة ، كما يمكن تخصيص الذاكرة وتحريرها حسب الحاجة.

تعريف مالوك

مالوك هي وظيفة تستخدم في لغة البرمجة لتخصيص الذاكرة أثناء تنفيذ البرنامج. يسمح لك بتخصيص كتل الذاكرة ديناميكيا بالحجم والنوع المطلوبين.

اسم وظيفة مالوك يأتي من كلمة "تخصيص الذاكرة". هذه الوظيفة هي واحدة من الوظائف الرئيسية في ج و ج++ ، وكذلك في لغات البرمجة الأخرى.

تسمح وظيفة مالوك للمبرمج بتخصيص عدد معين من وحدات البايت من الذاكرة أثناء تنفيذ البرنامج. يمكن أن يكون هذا مفيدا عندما تحتاج إلى إنشاء مصفوفة متغيرة الطول أو تخزين كميات كبيرة من البيانات أو إنشاء هياكل بيانات وفقا لظروف تنفيذ البرنامج.

بناء جملة وظيفة مالوك:

باطل * مالوك (الحجم);

أين:

  • باطل * - المؤشر إلى الذاكرة المخصصة (المؤشر إلى النوع المراد إرجاعه)
  • size_t — размер, в байтах, требуемой памяти

Функция malloc возвращает указатель на начало выделенной области памяти или NULL в случае ошибки.

Пример использования функции malloc:

#include 

#include

int main() {

int* array;

int size = 5;

array = (int*)malloc(size * sizeof(int));

if (array == NULL) {

printf("Ошибка выделения памяти");

return -1;

}

for (int i = 0; i < size; i++) {

array[i] = i;

}

printf("Массив: ");

for (int i = 0; i < size; أنا {) {

برينتف ("٪د " ، صفيف [أنا]);

}

مجانا (صفيف);

العودة 0;

}

.

أمثلة على استخدام مالوك

  • # تشمل

كثافة العمليات الرئيسية () {

شار * نص = (شار *)مالوك (100 * حجم (شار));

إذا (نص == لاغية) {

برينتف ("خطأ في تخصيص الذاكرة.

");

عودة 1;

}

ستركبي (نص ، " مثال على سلسلة ديناميكية.");

برينتف ("٪ق

"،نص);

حر (نص);

العودة 0;

}