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

سؤال عن new& deleat

مغلق
بدأه السهم الناري في 24 مايو 2003 · 7 رد · 811 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخواني الأعزاء لدي سؤال في الحقيقة لم يشرح لي في قاعات المحاضرات ولكن أريد أن أسأل عنه لأنني أفهم أن هذا الموضوع مهم .

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

وألف شكر لا تبخلو علي ولو بجزء من المعلومة فكل شيء عندي مفيد....

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#2

الدالة new هي من اهم الدوال في ++C وهي تعمل على مكان في الذاكرة اما للبيانات البسيطه او لكائنات Objecte موقع الذاكرة المحجوز يكون في heap هذا المكان لا يخلى من الذاكرة الا باستخدام delete (احد عيوب ++C)

اي ان المستخدم يجب ان يراعي ادارة الذاكرة

الدالة new و delete لا تستخدم الا في حالة التعريف الدياميكي (Pointer)

Example 
1.simpledate

int *array1;
int array2[20];

array1=new int[20];
.....
....
....
delete [] array1;
....
....
array1=new int[5];
.....
delete [] array1;

2.Object

class Person
{
public:
int nr;
CString name;
Person(CString name,int nr);
...
//setmthods and getmethode
}
void main()
{
Person *p1=new person("ali",1);
Person p2("ahmed",2);
....
...
....
delete p1;
}

المثال السابق نلاحظ ان array2 محددة ب20 عنصر ابتدا من التعرف حتىنهاية الرنامج وarray1 يمكن تعديل سعتها حسب الحاجة

كذللك المثل بالنسبة لكائن من النوع Person ف المتغير p1 من النوع Pointer اما p2 فهو ساكن

p2 يلغى من الذاكرة اثناء الخروج من الدالة التي عرف فيها في حين ان المكان المحجوز للمتغير p1 يبقى بعد الخروج من الدالة التي عرف فيها ان لم تستخدم delete

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#3

بس ملاححظة او اضافة

اقتباس
الدالة new هي من اهم الدوال في ++C وهي تعمل على مكان في الذاكرة اما للبيانات البسيطه او لكائنات Objecte موقع الذاكرة المحجوز يكون في heap هذا المكان لا يخلى من الذاكرة الا باستخدام delete (احد عيوب ++C)

هي من عيوب ال c وتم معالجتها في c++ باستخدام ال refrence

#include 

int main()
{
	int  intOne;
	int &rSomeRef = intOne;

	intOne = 5;
	cout << "intOne: " << intOne << endl;
	cout << "rSomeRef: " << rSomeRef << endl;

	cout << "&intOne: "  << &intOne << endl;
	cout << "&rSomeRef: " << &rSomeRef << endl;

	return 0;
}

طبعاً هي موجودة في c++ لكنها وارثتها من c

وتقبلوا خالص تحياتي

#4
اقتباس
كاتب الرسالة الأصلية : CS111

بس ملاححظة او اضافة

هي من عيوب ال c وتم معالجتها في c++ باستخدام ال refrence

refrence لا يلغي المكان المحجوز في الذاكره ولكن يدل على موقع المتغير في الذاكرة واعتقد انه معرف في C

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#5

السلام عليكم ورحمة الله وبركاته أما بعد:

شكر خاص لعزيزي وأخي الكريم khwlani لتفاعله ولقد أجاد حقيقة في رده وأنا معه بالنسبة للا شارات فلا تلغي المكان الذي تم حجزه في الذاكرة ولابد لأخي الكريم cs111 من تصحيح المعلومة فالمكان الذي نحجزه في الذاكرة لايلغى الى بي delate .

لقد فهمت الموضوع أن شاء الله وسأقرأ في كتب حتى استفيد بشكل أكثر .

سؤال لأخي khwlani كيف عرفت name بدون ذكرك ل char أي مامعنى هذه الجملة التي كتبت داخل class :

Cstring name;

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#6
اقتباس
كاتب الرسالة الأصلية : السهم الناري

السلام عليكم ورحمة الله وبركاته أما بعد:

سؤال لأخي khwlani  كيف عرفت name بدون ذكرك ل char  أي مامعنى هذه الجملة التي كتبت داخل class :

Cstring name;

ال class CString معرفة في ++VC اما اذاتستخدم Borlandc او اخر فاستخدم String على مااظن

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#7

لو اطلعت على برنامجي هل يوجد فيه امر delete

الشئ الثاني الrefrence هي غير موجودة في الc

واصبروا علينا

صحيح ان compiler ممكن يعملها

#8

يأخ CS111 لقد أطلعت على برنامجك ولم أهمله وألا ومافائدجة طرحي لسؤال إذا لم أعر أنتباه للجواب.

بالنسبة لبرنامجك كل ماعملته أنت عرفت أشارة ستعمل عليها كما لو كنت تعمل على نفس المتغير أو الكائن .

" أي أنك لم تقم بحجز مكان في الذاكرة وإنما خزنة عنوان متغير فقط"

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

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

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