मैं विजुअल स्टूडियो 2010 में एसडीएल के साथ एक गेम पर काम नहीं कर रहा हूं। मैं _CrtDumpMemoryLeaks()
मैक्रो में आया और सोचा कि मैं इसे जाने दूंगा। _CrtDumpMemoryLeaks()
को आमंत्रित करने से आउटपुट विंडो में प्रिंट मेमोरी लीक होती है, लेकिन यह नहीं दिखाती कि यह कहां होता है।सी ++ - _CrtDumpMemoryLeaks() के साथ मेमोरी लीक परीक्षण - आउटपुट लाइन संख्या
मैंने एमएसडीएन आलेख को Memory Leak Detection Enabling पर पढ़ा है, और यह बताता है कि यदि मैं _CRTDBG_MAP_ALLOC
को परिभाषित करता हूं तो इसे अपमानजनक कथन की लाइन संख्या आउटपुट करनी चाहिए। यह मेरे मामले में नहीं होता है। (हालांकि मैं इसे काम करने में सक्षम था अगर मैं सीधे malloc() का उपयोग करता हूं - 'नया' का उपयोग करके नहीं)।
कोड:
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *var = new int(5);
_CrtDumpMemoryLeaks();
return 0;
}
उत्पादन होता है निम्नलिखित: जब 'नए' तो अन्य तरीकों से समान व्यवहार को प्राप्त करने के लिए सुझाव का उपयोग कर आवंटन की सराहना की
Detected memory leaks!
Dumping objects ->
{58} normal block at 0x007D1510, 4 bytes long.
Data: < > 05 00 00 00
Object dump complete.
If _CrtDumpMemoryLeaks()
उत्पादन लाइन नंबर करने में असमर्थ है।
यह एमएफसी केवल – humbagumba
नहीं है, यह एमएफसी के बिना पूरी तरह से ठीक काम करता है। – msteiger
सबसे पहले, यह नया परिभाषित करता है जो थोड़ा भयानक है और किसी मौजूदा प्लेसमेंट को नए उपयोगों को तोड़ देता है; दूसरी बात यह 'DEBUG_NEW' के लिए एक वैध परिभाषा की आवश्यकता है जो केवल' afx.h' में मानक वीसी इंस्टॉल में प्रदान की जाती है जो कि एमएफसी हेडर बहुत अधिक है। –