Tôi có thể giải phóng bộ nhớ của chuỗi ký tự char * sau khi tôi đã chuyển đổi nó thành chuỗi std :: không? Ví dụ:Tôi có thể giải phóng bộ nhớ của chuỗi char * khi gán nó cho 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 hài lòng với mã ở trên ngoại trừ '' std: string''. – gongzhitaao
@gongzhitaao Chỉ vì biên dịch mã không có nghĩa là nó đúng. Bạn vẫn có thể dựa vào hành vi không xác định. Và 'std :: string' là hoàn toàn hợp lệ trong C++. Có thể bạn đã quên bao gồm ''. –
@Nó biên dịch và chạy chính xác. Tôi cho rằng nếu nó không thể được giải phóng thì một số lỗi thời gian chạy sẽ xảy ra. Hơn nữa, ý tôi là '' std: string'' thay vì '' std :: string''. Xem lỗi đánh máy? – gongzhitaao