當使用std::string
對象並且我想給它添加字符時,它是否會預先分配一些內存,還是隻根據需要分配?什麼時候std :: string重新分配內存?
準確地說:
std::string s;
s.reserve(20);
char c = 'a';
s = "";
for(int i = 0; i < 25; i++)
s += c;
在上述例子中我保留的存儲器的量。現在,當我清除字符串時,是否會導致保留的內存被丟棄? 在循環中它會填滿保留的內存,然後每次重新分配額外的5個字符?
除非應用「適合縮小」方法之一,否則將保留保留的內存。 – Niall 2014-09-22 12:27:10