码迷,mamicode.com
首页 > 编程语言 > 详细

string 管理 char 数组, 摆脱new delete

时间:2015-05-26 12:21:26      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

新公司,维护一个旧代码:

 

一个内存越界问题:

c = *(sText+nLeng+1); // 读随便你
*(sText+nLeng+1) = 0; // 越界两个字符,写坏内存


这会导致, 在无压力正常情况下运行不报错, 不core dump。   

 

 

在大压力测试的时候(fork架构) , 某几个进程会报错 malloc(): memory corruption,而且没有core文件生成。

 

只能靠注释代码来排查。

 

又顺便发现了一个内存泄漏问题:

char *sDecodeText ;
...
sDecodeText = new char[Len+1]; // 后面竟没有delete

以上这些风格,明显就是C开发人员写出来的C++代码。

 

尝试用STL管理分配释放问题。

 

1.  std::array<char, num>, 有 data()操作, 但array是个模版, num编译器决议,  我需要支持运行时决议的。

2. vector和string, 这个两个都符合要求, vector改内存后, 里面的计数不能添加, 本来也不是这样用的,污染代码

 

 string 的c_str()还得const_cast一下,麻烦但也没有其他选择了。

string 管理 char 数组, 摆脱new delete

标签:

原文地址:http://www.cnblogs.com/luikimfai/p/4530147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!