بسسم الله الرحمن الرحيم
الى الاخوة الاعزاء
السلام عليكم ورحمة الله وبركاته وبعد:
هل توجد داله او طريقه لحجز مساحة من الرام وعمل التطبيقات عليهااي تشغيل برنامجي وحجز المتغيرات عليها فقط.؟
تحياتي
بسسم الله الرحمن الرحيم
الى الاخوة الاعزاء
السلام عليكم ورحمة الله وبركاته وبعد:
هل توجد داله او طريقه لحجز مساحة من الرام وعمل التطبيقات عليهااي تشغيل برنامجي وحجز المتغيرات عليها فقط.؟
تحياتي
sorry for not writing in Arabic coz I'm in the college now....
you can do it within old C programs like this:
char *c; c = (char *) malloc(sizeof(100)); /* allocate 100 bytes in mem */ free ©; /* for diallocating */
Another approch with C++ by using the "new" keyword, I'm sorry I have no C++ compiler right now check out the MSDN but i guess it something like:
MyClass *x; x = new MyClass; free x; // for diallocating (I'm not sure about this :-( )
Regards,
Turki
عزيزي
سلام
إليك أربع دوال تستطيع استخدامها لحجز أماكن في الذاكرة
* الأولى : ()malloc وهي تحجز عدد الأماكن المطلوبة فقط في الذاكرة.
* الثانية: ()calloc وهي كذلك تقوم بحجز أماكن قي الذاكرة بعدد محدد و هي تشبه إلى حد كبير دالة ()malloc ولكن تختلف
معها في طريقة الحجز حيث أن الدالة ()malloc تحجز مساحة بعدد
البايت المحدد بين القوسين (100)malloc بينما في الدالة
()calloc تكون الهيئة كالتالي (10,10)calloc وتعني حجز 10 أماكن مساحة الواحد 10 بايت .
* الدالة الثالثة:()faralloc وهي كذلك تقوم بحجز أماكن في الذاكرة مثل دالة()malloc إلا أنها تختلف عنها في أنها تحجز أماكن تتعدى 64 كيلو بايت بينما دالة()malloc تقوم بحجز عدد أماكن أقل منها .
* الرابعة : ()realloc وهي لا تحتاج لتحديد عدد الأماكن فهي تغير عدد الأماكن حسب الطلب فكلما زادت قيمة المتغير تزداد عدد الأماكن المحجوزة وهي تفيدك عندما تريد استقبال قيم تجهل عددهاو بذلك تحقق الاستخدام الأمثل في استخدام الذاكرة .
الإجابة كانت حسب السؤال لذا لم أطرح لكل دالة مثال.
تحياتي
[عدلت بواسطة مبرمج ت:19-03-2001 س: 09:16 AM]
السلام
اخي تركي جزاك الله عنا الف خير على المجهود الذي تبذله
لمساعدتنا,,نقطه بسيطه فقط في الكود الخاص بال newعندتحرير
الذاكره تستخدم كلمة delete بدل كلمة free ,,
الصيغه العامه ل new
aPointerVar = new dataType [numVals]
حيث numVals اختياريه والتي تمثل كم متغير تريد تخصيص الذاكره
له ,,و aPointerVar يمثل المؤشر للمتغير والذي يجب ان يكون
مؤشر لنفس نوعية المتغير المراد تخصيص الذاكره له,,وdataType
تمثل نوعية المتغير,,,,كمثال :
اذا اردنا تخصيص ذاكره لخمسين متغير من نوع integer نستخدم الكود
int* khalid; khalid = new int[50]; delete khalid;
هناامر new يخصص مكان في الذاكره لخمسين متغير نوع integer
ويعيد مؤشر pointer لموقع اول integer في الذاكره والذي هو
في مثالنا khalid ,,,عند تنفيذ new نستطيع معاملة الذاكره
المخصصه وكانها array ,,,لتحرير الذاكره نستخدم delete
طبعا هذاالشرح ليس موجها لك اخي تركي لانك استاذنا جميعا
ولكنه لاخواني المبتدئين الذين يحبون تعلم ال ++C
تحياتي
خالد حسين
>
Thanks for each man was help me ,but how i can deal with files but on RAM not on the disk (i.e:no changing go to the hard disk only on RAM ) Thank u next time
sory ,i was written from my college ,no arabic languge))
bey
هل تريد عمل فيروس يقيم بالذاكرة أم ماذا ؟
لم يكن قصدي ان اعمل فيروس فانا لا اجيد السي بلس بلس جيدا ولكن لو اردت ذلك ساضعه في الرن RUN Regester وسيعمل دايما وفي الذاكره
لكن ما اريده هواني اريد عمل برنامج يعمل على الرام ولا يتدخل بالهارد ديسك مطلقا وشكرا
لا يوجد برنامج من هذا النوع, إلا لو كان البرنامج شئ يقيم في الـ ROM أساساً وهذا شئ مستحيل نظرياً لأن الـ ROM يتم حرقها عند تشكيلها في المصنع ولا يمكن الكتابة عليها فيما بعد.
أما البرامج المقيمة الأقرب لما تريد هو أن يكون البرنامج boot sector resident (مع تحفظي على المصطلح المبتكر للتوضيح) بمعنى يجب أن يكون مكتوبا في قطاع الاقلاع لكي يعمل مع بدء التشغيل وحتى في هذه الحالة فهو موجود على الهارد ديسك لكنه لا يظهر بصيغة ملف او برنامج كما تظهر بقية البرامج.
ايضا يجب ان تعلم انه يعمل قبل نظام التشغيل ليقوم بتنفيذ أمر ما ثم يسمح لنظام التشغيل بالعمل ويكون قد انتهى دوره هنا فيكون الشئ الذي قام بتعديله او اضافته ملف او تعديل ما يعمل في بيئة نظام التشغيل ويظهر كسواه, ملف..
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
تستطيع استخدام الدوال malloc و free المشابهه لـ new و delete في سي ++
ايضا يوجد دالة colloc ودالة realloc الموجودة بالملف الرأسي cstdlib وتستطيع استخدامهم لحجز مصفوفات ديناميكية.
void * colloc( size_t nmemb,size_t size); void * realloc (void * ptr,size_t size );

اشهد ان لا إله إلا الله وان محمدا ً رسول الله
كل هذه الدوال تحجز مساحة من الـVM وليس من الرام .
Once swapping is done -> BOOM! the process and all it's VM is paged out to the page file :P
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]