تقوم دلفي بإدارة الذاكرة تلقائيًا
يتم تخصيص المتغيرات الذرية في دلفي، مثل Integer وBoolean وRecord وEnumeration وما إلى ذلك، تلقائيًا بواسطة المترجم للذاكرة داخل النطاق ويتم تحريرها تلقائيًا عندما تكون خارج النطاق، بالإضافة إلى ذلك، السلاسل والمتغيرات والمصفوفات الديناميكية والواجهات تتم إدارتها تلقائيًا أيضًا بواسطة دلفي.
يتم تخزين كافة هذه المتغيرات على المكدس ، باستثناء الواجهات. بالإضافة إلى ذلك، يتم إنشاء المتغير يدويًا بواسطة المبرمجين باستخدام وظائف، مثل VarArrayCreate؛ كما يتم إنشاء المصفوفات الديناميكية يدويًا بواسطة المبرمجين باستخدام وظائف، مثل SetLength، ولكن في كلتا الحالتين، لا يحتاج المبرمجون إلى إصداره بأنفسهم.
بالإضافة إلى ذلك، هناك نوع آخر من المتغيرات التي يجب الإشارة إليها، وهو متغير تم الإعلان عنه باستخدام Threadvar، ونطاقه هو مؤشر ترابط. يُستخدم هذا بشكل أساسي عند كتابة الوظائف المترابطة بحيث يستخدم كل مؤشر ترابط وحدة تخزين محلية واحدة لمؤشر الترابط.
الذاكرة تدار يدويا من قبل المبرمجين
تتطلب المؤشرات والكائنات من المبرمجين التقدم يدويًا للحصول على الذاكرة وتحريرها.
تتضمن المؤشرات PChar، والمؤشر (مؤشر غير مكتوب)، ومؤشر السجل، ومؤشر المتغير (يشير إلى المتغير الذري)، ومؤشر الوظيفة (مثل وظيفة رد الاتصال، مقسمة إلى وظائف عامة وطرق كائن). استخدم الوظيفة الجديدة لتقديم طلب للحصول على الذاكرة، واستخدم Dispose لتحرير المؤشر. بالإضافة إلى ذلك، تعد GetMem وReallocMem وFreeMem أيضًا سلسلة من الوظائف لطلب الذاكرة وتحريرها. يمكنك قراءة وتعيين وظائف إدارة الذاكرة الثلاثة في دلفي من خلال وظائف GetMemoryManager وSetMemoryManager.
تتضمن الكائنات كائنات فئة فرعية موروثة من شجرتي توريث، TObject وIUnknown. يجب إنشاء الكائنات باستخدام أساليب البناء. إذا لم تقم بتحديد مالك لكائن تم إنشاؤه باستخدام طريقة منشئ (عادة إنشاء، ولكن قد لا يكون الأمر كذلك؛ مترجم دلفي يتعرف فقط على الكلمة الأساسية للمنشئ)، فيجب عليك تحريره يدويًا بنفسك، حتى لو قمت بتحديد مالك. لا تزال بحاجة إلى التحقق من الوضع الفعلي، ويجب إصداره في لحظة محددة. بشكل عام، يتم استخدام الأسلوب المجاني للإصدار (لا يتطلب IUnknown إصدارًا يدويًا. الطريقة الأفضل هي استخدام FreeAndNil (في وحدة Sysutils.pas)، والذي لا يقوم بتحرير الذاكرة المشغولة فحسب، بل يقوم أيضًا بتحرير المؤشر نفسه.
يتم تخزين هذه المتغيرات في الكومة . هناك مشكلة أخرى تحتاج إلى الاهتمام وهي أن المؤشرات الموجودة في TList يجب أن يتم تحريرها بواسطة المبرمج نفسه.
ملحوظة:
1. لا تنتمي وظيفة رد الاتصال إلى النطاق الفني لإدارة الذاكرة للحصول على التفاصيل، يرجى الرجوع إلى قسم "المؤشر".
2. للحصول على تفاصيل حول الكائن، يرجى الرجوع إلى قسم "نموذج الكائن".
3. إذا تم استخدام المؤشر في أماكن متعددة، وإذا تم تحرير أحد الأماكن، فسيحدث استثناء إذا تم استخدامه في أماكن أخرى، وهذه مشكلة يجب الانتباه إليها عند استخدام المؤشرات. للحصول على معلومات مفصلة عن الذاكرة، الرجاء الرجوع إلى قسم "المؤشر".
4. تمرير المؤشرات له ميزتان واضحتان: توفير الذاكرة وتحسين السرعة. للحصول على معلومات مفصلة عن الذاكرة، راجع قسمي "المؤشرات" و"نصائح التصميم".
5. كيفية الحكم على الكائنات والمؤشرات هو موضوع تقني للغاية. هناك بعض المنشورات حول هذا الموضوع على csdn. يمكنك أيضًا الاطلاع على مقالة كتبها Aimingoo ([email protected]) بعنوان "حول" كيفية اكتشاف ما إذا كان المؤشر. هي مقالة "مناقشة متعمقة للكائن". للحصول على معلومات مفصلة عن الذاكرة، راجع قسمي "المؤشر" و"الكائن".
اكتمل بتاريخ 19-1-2004 .
جميع الحقوق محفوظة. فلا تتردد في تصحيح أي تعليقات غير لائقة.