读书人

C++标准库中的string内存是分配在堆下

发布时间: 2013-02-17 10:44:46 作者: rapoo

C++标准库中的string内存是分配在堆上面吗?


例如我声明一个string变量。
string str;
一直不停的str.append("xxxxx");时,str会不停的增长。

我想问的是这个内存的增长,标准库中的string会把内存放置到堆上吗?

另外STL中的其他容器是否遵循相同的规则。

谢谢!
[解决办法]
肯定是堆里面的内存呀!看一下他的源代码实现就知道了!
[解决办法]
16以内在栈上,超过以后在堆上。
[解决办法]

引用:
引用:16以内在栈上,超过以后在堆上。
看来是看过某个实现版本源代码的淫啊!

MS的STL实现是这样的,短字符串在栈上分配有助于CPU提高Cache命中率。
[解决办法]
string的内存肯定是在堆上的,string内部自己维护一个申请和释放的指针,你外部应用是不用关心空间的申请,它内部会从堆上申请控件,析构时释放空间。

读书人网 >C++

热点推荐