الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

pleaz explain

مغلق
بدأه abram في 16 مايو 2004 · 1 رد · 430 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

this to me

void   *_Cdecl malloc   (size_t __size);

الرجاء شرح هذه الدالة

وشكرا

علما بان size_t اسم اخر ل unsigned

typedef unsigned int size_t;

وهذه الدالة في stdlib.h

and thanx all

تم تعديل هذه المشاركة بواسطة HGB في 16 مايو 2004 في 18:23

#2

السلام عليكم ,,

vابدا معي من البداية :)

void   *_Cdecl malloc   (size_t __size);

void الأولى معناها أن الدالة ستعيد ,, قيمة void ,, ونعلم أن ال void معناها لاشيء ,,

لكن اذا تمت اضافة * في الموضوع أصبح عندها معنى ,,

اذا أردت أن تستفيد أكثر في ال void راجع رابط دروس المؤشرات هنا ,,

/index.php?showtopic=35404

المهم الدالة malloc ستعيد عنوان من النوع void حيث يمكن بعدها أن نعيد العنوان بالطريقة المطلوبة لحجزه ,,

في السي++ يجب أن تكون ,,

int * x=(int*) malloc(6*(sizeof(nt));

أما في السي يمكن كتابة ,,

int * x = malloc(6*sizeof(int));

في السي++ يجب تغيير نوع الاعادة من void* وهو الافتراضي , الى نوع الحجز ,, وفي حالتنا

(int*)

ليتم الحجز ,, أما في السي ,, تتم عملية الاسناد بصورة آلية ,,

........................

بالنسبة ل _cdecl ,,

وهي ماتسمى اختصارا ل C Declaration ,, وهذه تتعلق بأمور طريقة تنظيف مكدس الدالة بعد تمرير البارمترات اليه ,, عند انتهاء الدالة ,,

توجد أنواع أخرى هي ,,

_cdecl
_stdcall
_fastcall
thid
_declspec

_cdecl وهي القيمة الافتراضية لأي كود نكتبه بالسي ,, أو بالسي++ ,, وهو هنا لأن الدالة كتبت في الأصل سابقا بمصرف سي ,, وليس سي++ ,,

ال _stdcall وهي طريقة الاستدعاء ال standard ,, من اسمها واضح standard Call ,, وهي الطريقة التي تعمل بها دوال الفيجوال بيسك ,,

لذا لكتابة دالة من السي++ لتعمل في الفيجوال بيسك كما ملفات ال dll يجب تصريحها بأنها _stdacll ,,

باقي الأمور لاتهم ,و حاليا , فقط أذكر this وهي طريقة الاستدعاء لكائنات الفئات ,,

وبالطبع كما هو واضح للبرامتر ,, فهو من النوع size_t وهول لحجز كمية البايتات ,,

ولو راجعت الدالة sizeof() ستجد أنها تعيد قيمة من النوع size_t ,,

بالتوفيق ,,

تم تعديل هذه المشاركة بواسطة HGB في 16 مايو 2004 في 19:27

banner_60_468.gif

NOTHING IS IMPOSSIBLE

هذا الموضوع مغلق.

مواضيع مشابهة