用vector和string代替new动态分配的数组

使用new动态分配数组,需要时时刻刻记住delete,很容易造成memory leak。使用vector和string则消除了这个负担,因为它们有自己的内存管理,在它们的析构函数中会自动释放内存。

通常情况下用vector代替动态数组,如果要存储的元素类型是字符类型时使用string。

所有适合于序列容器的STL算法,vector和string都可以使用。所以使用vector和string会带来更多的便利。

许多string的实现采用了“引用计数”,用于消除不必要的内存分配和不必要的字符拷贝。但这样的实现在多线程环境中,需要注意一下因支持线程安全而导致的性能问题。

如果所使用的string以“引用计数”方式实现,同时又运行在多线程环境中,并因此影响了程序效率。考虑以下三种选择:(1)是否可以通过改变某个预处理变量禁用引用计数。(2)寻找另外一个不使用“引用计数”实现的string。(3)使用vector<char>代替string,vector不允许使用引用计数,所以不会有多线程性能问题。

VC编译器自2005版本之后,大概是考虑到线程安全问题,string均没有以“引用计数”方式实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值