क्या मुझे स्मृति आवंटन, स्कोप और सी ++ "स्ट्रिंग" ऑब्जेक्ट के बारे में हटाने की आवश्यकता है?सी ++ स्ट्रिंग आवंटन
उदाहरण के लिए:
#include <string>
const char* func1() {
const char* s = "this is a literal string";
return s;
}
string func2() {
std::string s = "this is a literal string";
return s;
}
const char* func3() {
std::string s = "this is a literal string";
return s.c_str();
}
void func() {
const char* s1 = func1();
std::string s2 = func2();
const char* s3 = func3();
delete s1; //?
delete s3; //?
}
func2: मैं s2 'नष्ट' की जरूरत नहीं है। func3: क्या मुझे 's3 को हटाने' की आवश्यकता है?
बीटीडब्ल्यू, func1 सही है? क्या func1 गुंजाइश छोड़ने के बाद वर्ण स्मृति सामग्री अभी भी उपलब्ध है? यदि हां, तो क्या मुझे इसे हटा देना चाहिए जब मुझे इसकी आवश्यकता नहीं है?
http://stackoverflow.com/questions/2579874/lifetime-of-a-const-string-literal-returned-by-a- कार्यक्षमता – elgcom
http://stackoverflow.com/questions/267114/scope-of -स्ट्रिंग-लिटरल – elgcom