std :: string으로 변환 한 후 char * pointed 문자열의 메모리를 해제 할 수 있습니까? 예를 들어 :std :: string에 할당 할 때 char * 문자열의 메모리를 해제 할 수 있습니까?
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는 "std : string"을 제외하고 위 코드에 만족합니다. – gongzhitaao
@ gongzhitaao 코드가 컴파일되었다고해서 그것이 올바른 것을 의미하지는 않습니다. 여전히 정의되지 않은 동작에 의존 할 수 있습니다. 그리고'std :: string'은 C++에서 완벽하게 유효합니다. 아마도''을 포함하는 것을 잊었을 것입니다. –
@ 올바르게 컴파일되고 실행됩니다. 나는 그것이 해제 될 수 없다면 어떤 런타임 에러가 발생할 것이라고 생각한다. 더 중요한 것은''std :: string'' 대신에''std : string''을 의미합니다. 오타가 보이니? – gongzhitaao