c++的类型会占用系统内存占用大量内存吗

对系统内存占用大量内存问题不昰很懂请大家帮忙看看。

初始化一个string tmp然后通过循环不停的给他+=值,这个时候tmp占用的系统内存占用大量内存是怎么变化的

脱离具体环境看是没有意义的,string通常是比较紧凑的存储系统内存占用大量内存占用不会比字符串长度大很多,但是string为了效率延长时的系统内存占鼡大量内存分配是有讲究的,重分配是很慢的(分配系统内存占用大量内存本身耗时不少加上整体拷贝)

比如比较简单的一种方式是每佽重分配都分配上一次2倍的长度,这样可以明显减少重分配次数gcc貌似这么干的

VC要复杂,他的优化更考虑时间空间的平衡

可以看看string源代码

基本就是原来的空间装不下了,开辟一块新的足够大的空间把原来空间里的内容拷贝过去,再把要加的加上

预先会分配一段空间这個空间通常比初始化时的大。如果随着不断加字符超过这个空间时,就会将原来的空间释放分配一个更大的空间。 另外死循环的情形,占用的系统内存占用大量内存一般不是实际的系统内存占用大量内存而是虚拟系统内存占用大量内存。

匿名用户不能发表回复!

我要回帖

更多关于 系统内存占用大量内存 的文章

 

随机推荐