مرحبا ، مرحبا بعودتك. ستكون هذه مهمتنا الأخيرة ، والتحدي الأخير
لقسم المؤشر لدينا.
في هذا التحدي ، أريدك أن تفهم كيف يعمل
تخصيص الذاكرة الديناميكي. لذلك سوف تحتاج إلى malloc سلسلة.
ستكون أساسية جدًا.
لكنها ستجعلك تفهم هذا المفهوم الكامل
لتخصيص الذاكرة الديناميكي.
ما هي مزايا تخصيص الذاكرة الديناميكي؟
حسنًا ، هذا يعني أنه يمكنك تخصيص ذاكرة كافية عندما تحتاجها.
ليس عليك إضاعة الذاكرة. وإذا كنت بحاجة إلى مزيد من الذاكرة ، يمكنك إعادة تخصيصها.
هذه المهمة ستجعلك تستخدم malloc.
لذا في هذا التحدي ، ستكتب برنامجًا يختبر فهمك لتخصيص الذاكرة الديناميكي.
أريدك أن تكتب برنامجًا يسمح للمستخدم بإدخال سلسلة نصية.
لذلك سوف تحتاج إلى استخدام scanf. يمكنك أيضًا استخدام git s ، لم
نتحدث عنها كثيرًا ، لكن git s أو f git s في تدفق الإدخال
القياسي سيسمح لك بقراءة سلسلة
تحتوي على مسافات. تذكر ، scanf سيقرأ
فقط السلسلة حتى مسافة.
إذا كنت تستخدم git s ، فيمكنك قراءة سلاسل متعددة مفصولة بمسافات ، في كلتا الحالتين
، سواء كان scanf أو git s في كلتا الحالتين.
ستطلب من المستخدم إدخال سلسلة. سيقوم البرنامج بطباعة
النص الذي تم إدخاله.
قد يبدو ذلك سهلاً للغاية ، لكن الاختلاف هنا هو أن البرنامج سيستخدم تخصيص
الذاكرة الديناميكي.
يمكنك أيضًا أن تطلب من المستخدم إدخال حد السلسلة التي يدخلها
، وبعد ذلك يمكنك استخدام ذلك لـ malloc ، حتى تعرف عدد البايتات المراد تخصيصها.
يجب عليك إنشاء مؤشر حرف ، مؤشر حرف فقط ، بدون مصفوفات أحرف.
أريدك أن تخصص ذاكرة. تذكر ، عند إنشاء مصفوفة الأحرف
، يتم تخصيص الذاكرة تلقائيًا بالفعل لك بناءً
على الحجم الذي تضعه
بين قوسين. ومرة أخرى ، فإن العيب الكبير في ذلك الآن
هو ما إذا حاولت إدخال شيء أكبر مما تضعه في الحجم ، فعليك إعادة تجميعه.
إنه ثابت. يتم تخصيص تلك الذاكرة في وقت الترجمة.
يتم تخصيص الذاكرة الديناميكية عند تشغيل البرنامج.
وبذلك يمكنك تحديد مقدار الذاكرة التي تريد تخصيصها بناءً على ما يدخله المستخدم.
لذا مرة أخرى ، اطلب من المستخدم إدخال رقم لعدد
البايت الذي تريد تخصيصه للسلسلة.
ثم اطلب من المستخدم إدخال السلسلة في.
وعليك تخصيص الذاكرة بشكل صحيح ثم تمرير مؤشر الحرف هذا إلى
scanf أو git s
ثم عرض النص الذي تم إدخاله بشكل أساسي.
ثم أخيرًا ، لا تنسَ كل الوظائف المجانية المهمة.
تريد دائمًا تحرير ذاكرتك عند الانتهاء من استخدامها
وتريد التأكد من القيام بذلك حتى تتمكن البرامج الأخرى من استخدام
تلك الذاكرة. تعد الذاكرة موردًا نادرًا
، خاصة في برامج الوقت الفعلي للأنظمة المضمنة ، لذلك
لا تستهلك الذاكرة ، بل حررها.
حظاً سعيداً ، وسأقدم حلاً في المحاضرة القادمة. شكرًا لك.