this to me
void *_Cdecl malloc (size_t __size);
الرجاء شرح هذه الدالة
وشكرا
علما بان size_t اسم اخر ل unsigned
typedef unsigned int size_t;
وهذه الدالة في stdlib.h
and thanx all
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
السلام عليكم ,,
vابدا معي من البداية :)
void *_Cdecl malloc (size_t __size);
void الأولى معناها أن الدالة ستعيد ,, قيمة void ,, ونعلم أن ال void معناها لاشيء ,,
لكن اذا تمت اضافة * في الموضوع أصبح عندها معنى ,,
اذا أردت أن تستفيد أكثر في ال void راجع رابط دروس المؤشرات هنا ,,
المهم الدالة 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
هذا الموضوع مغلق.