Tôi đang xử lý nhiều chuỗi trong chương trình của mình. Dữ liệu chuỗi này không thay đổi trong toàn bộ thời gian cuộc sống sau khi chúng được đọc vào chương trình của tôi.Cách giải phóng dung lượng không sử dụng của một chuỗi
Nhưng kể từ khi chuỗi C++ giữ dung lượng, chúng sẽ lãng phí rất nhiều không gian sẽ không được sử dụng chắc chắn. Tôi đã cố gắng giải phóng những khoảng trống đó, nhưng nó không hoạt động.
Sau đây là đoạn code đơn giản mà tôi đã cố gắng:
string temp = "123456789";
string str;
cout << str.capacity() << endl;
str.reserve(16);
cout << str.capacity() << endl;
// capacity is 31 on my computer
str += temp;
cout << str.capacity() << endl;
str.reserve(16);
cout << str.capacity() << endl;
// can't release. The capacity is still 31.
(Trình biên dịch là Visual C++)
Làm thế nào tôi có thể phát hành nó?
Có bạn thực sự hết bộ nhớ? Nếu không, đây là tối ưu hóa sớm. Nếu bạn đã hết bộ nhớ, thì những đối tượng nào thực sự thống trị phân bổ bộ nhớ của bạn? Vấn đề là loại điều này không hữu ích. –
Không có cách nào để buộc người cấp phát sử dụng ít byte hơn ** cho việc xây dựng ban đầu của một chuỗi đã cho ** - ít nhất là không phải viết mẫu lớp cấp phát STL của riêng bạn (và có thể không phải là sau đó). –