هل قواعد المتغيرات المحلية تنطبق على النوع Pointer ؟
#1
السلام عليكم ورحمة الله تعالى وبركاته

نص المسألة : هل المؤسرات المعرفة في الدالة أو الإجرائية (والتي يتم حجزها دخلها) تحرر المساحة المحجوزة من طرفها عند إنتهاء تنفيذ الدالة (حتى ولو لم يتم تحريرها من قبل المبرمج) ؟
الرد
#2
و عليكم السلام ورحمة الله تعالى وبركاته

يجب تحرير المؤشر من الذاكرة 

كود :
FreeMem (pText)؛
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#3
بارك الله فيك على الرد

لكن وإن لم نحرره هل يتحرر أتوماتكيا عند إنتهاء تنفيذ الدالة ؟
الرد
#4
لا يتحرر أوتوماتيكيا
الرد
#5
بارك الله فيك اخي الكريم 

لو ذققت في هذا الكود : نجد اننا يمكننا الوصول إلى البيانات مع اننا قمنا بتحريرها (أليس من المفروض اننا لا يمكننا الدخول إليها ؟)

كود :
TPtr = ^integer; //------- var   Form1: TForm1;   iPtrGlob : TPtr; //--------- implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin   memo1.Lines.Add(iPtrGlob^.ToString); end; procedure TForm1.Button1Click(Sender: TObject); var   iPtrlocal : TPtr; begin   new(iPtrlocal);   iPtrlocal^ := 2020;   memo1.Lines.Add(iPtrlocal^.ToString);   iPtrGlob:= iPtrlocal; //------   Dispose(iPtrlocal); //------- end; end.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم