Posso liberare la memoria della stringa char * point dopo averla convertita in una stringa std :: string? Per esempio:Posso liberare la memoria della stringa char * quando la assegno a std :: string?
char* c_string;
c_string = strdup("This is a test");
std::string cpp_string;
cpp_string(c_string);
free(c_string); /* can I call free here? */
vs2012 è soddisfatto del codice precedente tranne '' std: string''. – gongzhitaao
@gongzhitaao Solo perché il codice viene compilato non significa che sia corretto. Potresti ancora fare affidamento su un comportamento indefinito. E 'std :: string' è perfettamente valido in C++. Probabilmente hai semplicemente dimenticato di includere ''. –
@Compila e funziona correttamente. Suppongo che se non potrebbe essere liberato allora si verificherà qualche errore di runtime. Inoltre, ciò che intendo è '' std: string'' invece di '' std :: string''. Vedi l'errore? – gongzhitaao