كيفية تعامل الذاكرة عند إغلاق نافذة QT؟
-
21-08-2019 - |
سؤال
أقوم حاليًا بإنشاء برنامج في QT و OpenCV و Mac OS X. لدي نافذة رئيسية ، ثم نافذة منفصلة مفتوحة. أقوم بتمرير النافذة الجديدة عدة استنساخ مصفوفة في المُنشئ:
ImageWindow *imageWin = new ImageWindow(
cvCloneMat(getData->getMasterRawMat(1)),
cvCloneMat(getData->getMasterRawMat(2)),
cvCloneMat(getData->getMasterRawMat(3)),
cvCloneMat(getData->getMasterRawMat(4)) );
imageWin->show();
كيف يمكنني تخصيص (أين أدعو cvreleasemat) ، عندما تكون النافذة الجديدة مغلقة؟
المحلول
يمكنك القيام بذلك على سبيل المثال الخاص بك CloseEvent (). بدلاً من ذلك ، إذا كنت تستخدم qt :: wa_deleteonclose من اجلك سمات القطعة, ، سيتم حذف القطعة عند إغلاقها ، مما يعني أنه يمكنك وضع بعض إجراءات التنظيف في المدمر.
نصائح أخرى
فكر في استخدام raii المصطلح و مؤشرات ذكية ولن تحتاج إلى تذكر وقت إطلاق الذاكرة المخصصة.
لا تنتمي إلى StackOverflow