के साथ मैक्रो विवादों के साथ नया स्थान बदल रहा है मेरे पास एक विशाल आवेदन (कई मिलियन एलओसी, और हजारों फाइलें) हैं, और मैं मेमोरी लीक का पता लगाने के लिए डीबग सीआरटी का उपयोग करने की कोशिश कर रहा हूं। मैं कोशिश कर रहा हूँ तो जैसे नए वृहद ize:नए
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#ifndef NEW_DEBUG
#define NEW_DEBUG new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new NEW_DEBUG
#endif
अब, मेरे ऐप, इतना बड़ा है, इसलिए मेरे लिए, आदर्श, मुझे लगता है कि डाल एक हेडर फाइल में और विशेष रूप से शामिल है कि हजारों की संख्या में में सीपीपी फाइलें एक मजेदार काम नहीं है। इसलिए मैंने इसे हमारे एसडीके में एक सामान्य हेडर फ़ाइल में रखने का प्रयास किया है, जो प्रत्येक अनुवाद इकाई में शामिल होगा।
जिस समस्या में मैं दौड़ रहा हूं वह ऐसा लगता है कि कुछ एसटीएल हेडर फाइलों के साथ संघर्ष करना प्रतीत होता है, और जब प्लेसमेंट का उपयोग किया जाता है तो संकलक त्रुटियों को उत्सर्जित करता है। मैं इसे अपने स्वयं के कोड में बदल सकता हूं, प्रगमा का उपयोग करके और नए मैक्रो को अक्षम कर सकता हूं। वहां कोई समस्या नहीं है। यह एसटीएल हेडर फाइलें हैं जो प्लेसमेंट का उपयोग करती हैं, मैं नहीं बदल सकता।
मैंने कार्य-आसपास को पुन: व्यवस्थित करके सीपीपी फ़ाइलों में निर्देश शामिल किए हैं। उदाहरण के लिए:
// doesn't compile
#include "new_redirect.h"
#include <map> // for instance
// does compile
#include <map> // for instance
#include "new_redirect.h"
लेकिन यह एक मुश्किल काम के आसपास क्योंकि फिर, मैं फ़ाइलों के हजारों संशोधित जाते हैं, और सुनिश्चित करें कि उनके एसटीएल हेडर शामिल किए गए हैं और कुछ से पहले कुछ भी करना पड़ता है। विडंबनापूर्ण बात यह है कि मैंने विशेष रूप से इस समस्या का परीक्षण करने के लिए एक हैलो वर्ल्ड एप्लिकेशन बनाया है: और मेरा हैलो-वर्ल्ड ऐप ठीक संकलित है। लेकिन मेरा विशाल ऐप इस काम के बिना नहीं करता है।
तो मेरी प्रश्न हैं:
- किसी को भी करने में सक्षम हो गया है स्थूल ize कोड की भारी मात्रा में झूल बिना नई पूरी तरह से? (अपेक्षाकृत दर्द रहित तरीके से)
- मेरे एसटीएल हेडर को पुन: व्यवस्थित करने के लिए कोई अन्य तरीका निर्देश शामिल हैं?
धन्यवाद
इस सवाल देखा http://stackoverflow.com/questions/4301505/compile- पारित त्रुटियों-कब-मैं-उपयोग-सीआरटी-मेमोरी-लीक-डिटेक्शन? – sharptooth
नहीं, मैंने नहीं किया है, लेकिन इसे पढ़ने के बाद, यह इस उपयोग के मेरी उम्मीदों के ताबूत में नाखून की तरह लगता है ... –
'नया' को फिर से परिभाषित करना एक बुरा विचार है (टीएम)। यह भी देखें [http://stackoverflow.com/questions/3202520/) और [यहां] (http://stackoverflow.com/questions/1326656/)। –