لماذا يكون نصف ملف الهدف-C المترجم (الصغير) عبارة عن كتلة كبيرة من الأصفار؟

StackOverflow https://stackoverflow.com/questions/146025

  •  02-07-2019
  •  | 
  •  

سؤال

لقد فتحت تطبيق Hello World Obj-C المجمع في محرر نصوص، ولدهشتي، وجدت حوالي 8 كيلو بايت من 00 00 00 00 00 00 00 00 ....

لماذا هؤلاء هنا؟هل هناك طريقة لمسح هذه الأصفار (والتي أشك في وجودها أيضاً وظيفة كثيرة)؟

من الواضح أنه ليس مهمًا جدًا في هذا الملف، لأنه يبلغ حجمه 16 كيلو بايت فقط في البداية، ولكني أود أن أعرف على أي حال.

هل كانت مفيدة؟

المحلول

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

تحب الروابط وضع هذه الأقسام على حدود 4k أو 8k.يؤدي هذا إلى تحسين وقت التحميل بسعر قليل من إهدار الذاكرة.

بالنسبة لعالم الترحيب البسيط، يعد هذا أمرًا مهمًا، ولكن بالنسبة للتطبيقات الكبيرة، تكون الذاكرة الإضافية المستخدمة للحشوة ضئيلة.

نصائح أخرى

هل يدعم Objective-C الارتباط المتزايد؟وهذا من شأنه أن يفسر سبب وجود مساحة كبيرة للحشوة.

يريد بعض المترجمين أو الروابط رقمًا تقريبيًا لحجم الملف.يمكنك أن ترى أنه عند إضافة بعض التعليمات البرمجية، لا يزيد حجم الملف.أعتقد أن هذه هي الأصفار التي تراها.

ربما هو متغير ثابت؟أعلم أنه في العديد من اللغات المشابهة للغة C، يتم تضمين القيمة الأولية للمتغير الذي تم تعريفه بأنه ثابت في الكود الصادر عن المترجم.في وقت التشغيل، يتم تعيين هذه القيمة الأولية إلى ذاكرة العملية.ربما تقوم أنت (أو بعض التعليمات البرمجية التي تقوم بتضمينها أو الارتباط بها) بتعريف مصفوفة بحجم 8 كيلو بايت بدون تهيئة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top