Tôi đã gỡ lỗi này trong 2 giờ rồi, và nó tóm lại điều này. Nếu tôi gọi QString::toStdString
QString :: toStdString() treo trên std :: string destructor
QString s = "testtesttesttesttesttest";
const std::string &temp = s.toStdString();
chương trình sau treo trên std :: string destructor
__CLR_OR_THIS_CALL ~basic_string()
{ // destroy the string
_Tidy(true); // <---- It crashes on this line.
}
Tôi nghĩ đó là tham nhũng bộ nhớ lúc đầu, nhưng điều này xảy ra ngay cả khi main()
chỉ chứa những 2 dòng. Có ai biết tại sao điều này xảy ra không, và tôi có thể sửa nó như thế nào?
Phiên bản Qt của tôi là 4.8.1
.
Bạn đang sử dụng phiên bản Qt nào? Điều gì xảy ra nếu thay vì một tham chiếu bạn lưu trữ một bản sao của chuỗi 'string temp = s.toStdString();'? – RedX
Điều tương tự xảy ra với 'string temp = s.toStdString();', nó chỉ xảy ra trước đó bởi vì hàm hủy của biến tạm thời được trả về bởi 'toStdString()' được gọi ngay lập tức. Làm cách nào để xem phiên bản Qt tôi đang sử dụng? Tôi nhìn ở đâu? Dự án đã được thiết lập bởi những người khác, tôi không có kinh nghiệm sử dụng Qt với Visual Studio, chỉ với Qt Creator. – sashoalm
thử điều này: 'std :: string stdUtf8 = qs.toUtf8(). ConstData();' – Najzero