thể trùng lặp:
std::string and its automatic memory resizingCác chuỗi C++ được lưu trữ như thế nào?
Tôi chỉ tò mò, làm thế nào được chuỗi được lưu trữ trong bộ nhớ? ví dụ: khi tôi làm điều này:
string testString = "asd";
nó phân bổ 4 byte, phải không? a + s + d + \0
.
Nhưng sau đó, khi tôi muốn gán một số văn bản mới cho chuỗi này, nó hoạt động, nhưng tôi không hiểu làm thế nào. Ví dụ: tôi thực hiện điều này:
testString = "123456789"
Bây giờ phải dài 10 byte. Nhưng nếu không có không gian cho chuỗi đó thì sao? chúng ta hãy nói rằng thứ năm + thứ sáu byte từ đầu chuỗi được thực hiện bởi một số 2 ký tự khác. CPU xử lý nó như thế nào? Nó tìm thấy vị trí hoàn toàn mới trong bộ nhớ mà chuỗi đó phù hợp?
Có thể không trùng lặp chính xác, câu hỏi ban đầu đã biết rằng bộ nhớ được phân bổ động bởi chuỗi, mà tôi không chắc chắn là trường hợp ở đây. Dù sao tôi sẽ không bỏ phiếu để mở lại. –