void *operator new(size_t size)
{
printf("allocate %d \n",size);
return malloc(size);
}
void teststring()
{
auto printstr = [](const string &str) {
printf("%s size=%d,capacity=%d\n", str.c_str(),str.size(),str.capacity());
};
string str = "";
printstr(str);
string a = "a";
for (int i = 0; i < 100;i++)
{
str += a;
printstr(str);
}
}
int main()
{
teststring();
system("pause");
}
结果:
从结果可以看出它的布局和vector及其相似。当长度超出容量时,就“翻倍”分配内存,然后再把复制过去。