على إغلاق Qt 4.5 تطبيق Visual Studio التقارير أنه قد تم الكشف عن تسرب الذاكرة

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

سؤال

أنا بناء على Qt 4.5 التطبيق على ويندوز باستخدام Visual Studio 2008.كلما تشغيل التطبيق في وضع التصحيح ثم إغلاقه ، Visual Studio يطبع التالية إلى إخراج جزء:

الكشف عن تسرب الذاكرة!
إلقاء الأجسام ->
{696512} العادية كتلة في 0x01981AB0, 24 بايت.
البيانات:< > 00 CD CD CD 00 00 00 00 00 00 00 00 00 00 00 00
{696511} العادية كتلة في 0x02E59B70, 12 بايت.
البيانات:< U2g U2g> B0 1A 98 01 E8 55 32 67 E8 55 32 67

وإخراج التقارير مئات من هذه القطع.وقد لاحظت هذا بشكل خاص عند استخدام Qt 4 نموذج/عرض الإطار.لا Qt في الواقع قد تسرب الذاكرة ، أم أن هناك ظروف Visual Studio misreports التسريبات ؟

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

المحلول 2

وكان لي فرصة لمحة مشروعي باستخدام DevPartner. الشيء المدهش هو أنه تقارير تسرب الذاكرة في QtGuid4.dll وQtCored4.dll. ومع ذلك، بعد النظر يدويا في كل حالة، واكتشفت أنهم كانوا جميعا ايجابيات كاذبة.

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

نصائح أخرى

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

عدد في الأقواس {696512} هو تخصيص رقم الطلب.إذا كان هذا الرقم هو نفسه دائما, ثم يمكنك تعيين نقطة فاصل على هذا التخصيص عن طريق تمرير رقم _CrtSetBreakAlloc.تشغيل البرنامج في مصحح الأخطاء مرة أخرى و المصحح سوف تتوقف عندما تسربت يتم تخصيص الذاكرة.

استدعاء هذه الدالة في وقت مبكر الرئيسية.إذا لم يكن الرقم نفسه دائما, حاول إعادة إنشاء تسرب الذاكرة مع انخفاض رمز حتى أنه هو نفسه دائما.

لمزيد من المعلومات انظر تسرب الذاكرة الكشف عن تمكين

تأكد من أنك تستخدم ذاكرة ديناميكية في كيو تي في اتجاه و، منها مثلا.

#include <QObject>
#include <QString>

class MyClass : public QObject
{
public: 
MyClass (const QString& text, QObject *parent = 0);
...
};


int main()
{
QObject parent;
MyClass *a;
a = new MyClass ("foo", &parent);
...
}

و(ج) يوهان ثيلين، "أسس التنمية كيو تي"

وأعتقد أن هذا يحدث عندما كشف عن تسرب الذاكرة هو التحقق من وجود تسرب قبل QT يفعل هو تنظيف. أنا ثابت على هذه المشكلة عن طريق تحريك بلدي qtmaind.lib، QtCored4.lib، QtGuid4.lib، QtOpenGLd4.lib، وما إلى الجزء السفلي من مربع تبعيات رابط في الحوار إعدادات المشروع VS ل.

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