سؤال

أنا أستخدم مكتبة معالجة الصور التي ترمي استثناء عندما أحاول تحميل الصور> 4GB في الحجم. يدعي أنه 64 بت، لكن لم تسمح مكتبة 64bit بتحميل الصور أكبر من ذلك؟ أعتقد أنهم قاموا بإعادة ترجمة مكتبات C باستخدام نموذج / مترجم ذاكرة 64 بت ولكن لا يزال يستخدم أعداد صحيحة غير موقعة والترقية الفاشلة لاستخدام أنواع 64 بت.

هل هذا هو استنتاج معقول؟

يحرر - كإشعار بعد التفكير، أصبحت ذاكرة OS تابعة لدرجة أن تخصيص قطع كبيرة لم يعد ممكنا؟ (لا يعمل بشكل صحيح بعد إعادة التشغيل إما، ولكن فقط أتساءل.) ماذا عن ضمن .NET؟ هل تصبح الذاكرة المدارة .NET مجزأة للغاية بحيث يفشل تخصيص قطع كبيرة؟

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

المحلول

إنه اقتراح معقول، ولكن السبب الدقيق يمكن أن يكون عددا من الأشياء - على سبيل المثال ما الذي تقوم بتشغيله، كم من ذاكرة الوصول العشوائي / المبادلة لديك؟ قد لا يجوز للتطبيق / OS عن ارتكاب ذاكرة افتراضية حتى تحتاج إلى 4 جيجابايت (أو أكثر) من ذاكرة الوصول العشوائي المجانية لفتح الصورة.

من الفائدة يبدو أنه توقف محدد في الحدود 4GB - أي أن صورة 3.99 جيجابايت تنجح، لكن 4 جيجابايت يفشل - أنت تقول إنه من شأنه أن يقترح استخداما محددا لحجم 32 بت في هياكل بيانات المكتبات.

تحديث

فيما يتعلق بسؤالك الثاني - ليس حقا. إلى حد كبير جميع الذاكرة الظاهرية لعمل نظام التشغيل الحديث، لذلك تحصل كل عملية على مساحة عنوان متجاورة. لا يلزم دعم منطقة متجاورة واحدة في مساحات عنوان العمليات من قبل ذاكرة الوصول العشوائي المتجاورة، ويمكن أن تتكون من عدد من المجالات المادية المنفصلة من ذاكرة الوصول العشوائي التي قدمت لتبدو كأنها متجاورة؛ لذلك لا يحتاج نظام التشغيل إلى وجود قطعة واحدة من 4 جيجابايت من ذاكرة الوصول العشوائي مجانا لإعطاء طلبك قطعة 4GB.

من الممكن أن يكون تطبيق قد شظية أنه مساحة العنوان الافتراضية بحيث لا توجد مجال لمجال 4 جيجابايت متجاورة، ولكن بالنظر إلى حجم مساحة عنوان 64 بت، فمن المحتمل جدا في السيناريو الخاص بك.

نصائح أخرى

نعم، ما لم تكن تنسيق الملف الثنائي نفسه يحد حجم الصور.

للإجابة على متابعتك، قرأت مؤخرا هذه مقال ووجدها مثيرة للاهتمام.

ونعم، يمكن أن يكون لديك مشاكل مع تجزئة الذاكرة.

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