कोड खंड 1 नहीं:क्यों wstring नहीं है :: c_str एक स्मृति रिसाव के कारण अगर ठीक से नष्ट कर दिया
wchar_t *aString()
{
wchar_t *str = new wchar[5];
wcscpy(str, "asdf\0");
return str;
}
wchar_t *value1 = aString();
कोड खंड 2
wstring wstr = L"a value";
wchar_t *value = wstr.c_str();
कोड खंड 2 से मूल्य तो नष्ट नहीं किया जाता है तो एक स्मृति रिसाव नहीं होता है। हालांकि, यदि कोड सेगमेंट 1 से वैल्यू 1 हटाया नहीं गया है तो मेमोरी रिसाव है। Wstring :: c_str का आंतरिक कोड मेरे जैसा ही दिखता है।
टाइपो: "जब स्ट्रिंग नष्ट हो जाती है, जिसके बाद पॉइंटर * अब अमान्य नहीं होगा *" - अब मान्य नहीं होना चाहिए * या * अमान्य * –
@ बेन: धन्यवाद, पहले ही तय हो गया है। –