Código Segmento 1:¿Por qué no wstring :: c_str causar una pérdida de memoria si no se eliminan adecuadamente
wchar_t *aString()
{
wchar_t *str = new wchar[5];
wcscpy(str, "asdf\0");
return str;
}
wchar_t *value1 = aString();
segmento de código 2
wstring wstr = L"a value";
wchar_t *value = wstr.c_str();
Si no se elimina el valor del segmento de código 2 a continuación, una pérdida de memoria no ocurre. Sin embargo, si el valor 1 del segmento de código 1 no se elimina, hay una pérdida de memoria. El código interno de wstring :: c_str me parece igual.
typo: "cuando se destruye la cadena, después de lo cual el puntero * ya no será inválido *" - debería ser * ya no ser válido * o * ser inválido * –
@Ben: gracias, ya arreglado. –