سؤال

لقد استخدمت طريقة SprintF لتنسيق البيانات لسلسلة أريد أن أكتبها إلى ملف ، في تطبيق C ++ Console باستخدام VS 2008. الإدخال هو رسالة معينة ، والتي لها متغيرات وقيم مختلفة (على سبيل المثال: اكتب "int" 10 ' / type string والقيمة "ABC" ، وما إلى ذلك) عندما أرسل رسالتين ، فإنه يعمل بشكل مثالي. ولكن عندما أرسل أكثر من رسالتين ، فإنه يعطي خطأ في وقت التشغيل قوله 0xc0000005: موقع قراءة انتهاك الوصول 0xabababab. لماذا يحدث هذا؟ هل لأن طريقة "Sprintf" لها طول مخزن مؤقت افتراضي؟ كيف يمكنني التغلب على هذه المشكلة؟

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

المحلول

لا ، لا يوجد حجم افتراضي. سوف يفترض أن هناك مساحة كافية ، والكتابة كما هو محدد بواسطة سلسلة التنسيق.

يقول انتهاك وصولك قراءة, ، وهو ما يلمح أنه قد يكون هناك خطأ في الحجج الخاصة بك ، ربما لا يتطابق مع سلسلة التنسيق.

يجب أن يكون لديك العديد من الوسائط تمامًا ، وأنواع مناسبة والترتيب الصحيح ، كما تشير إلى استخدام %-الرموز في سلسلة التنسيق.

نصائح أخرى

بالمناسبة ، قد ترغب في إلقاء نظرة على هذه الصفحة.

0xabababab: يستخدمه Microsoft's Heapalloc () لتمييز بايت حارس "No Man's Land" بعد تخصيص ذاكرة الكومة

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