ठीक है previous प्रश्न का उत्तर स्पष्ट रूप से दिया गया था, लेकिन मुझे एक और समस्या मिली।सी ++ नया और हटाएं और स्ट्रिंग और फ़ंक्शंस
क्या होगा यदि मैं कार्य करें:
char *test(int ran){
char *ret = new char[ran];
// process...
return ret;
}
और फिर इसे चलाने:
for(int i = 0; i < 100000000; i++){
string str = test(rand()%10000000+10000000);
// process...
// no need to delete str anymore? string destructor does it for me here?
}
तो स्ट्रिंग के लिए चार * परिवर्तित करने के बाद, मैं हटाने बारे में चिंता करने की जरूरत नहीं है?
संपादित करें: के रूप में उत्तर दिया, मैं delete[]
करने के लिए प्रत्येक new[]
कॉल है, लेकिन मेरे मामले पर अपनी संभव नहीं के बाद से सूचक खो गया है, तो सवाल यह है: मैं कैसे चार स्ट्रिंग के लिए कनवर्ट करते हैं, ठीक?
पुन: संपादित करें ... या तो डॉन पॉइंटर खोना नहीं है (नीचे दिए गए मेरे उत्तर के अनुसार) या (बेहतर अभी भी) सूचक 'नया' नहीं है, स्ट्रिंग को पकड़ने के लिए बस 'std :: string' का उपयोग करें। आप स्मृति आवंटन खुद क्यों करना चाहते हैं? – Johnsyweb