BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #97817同步于 2018/7/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

在公司里做C/C++的同学来一下,很好奇一个问题...

raaay0608
2018/7/4镜像同步14 回复
lz暑期在某厂做C++的后台,之前没写过C++主要写是业务的东西,对外提供接口啥的 主要用protobuf做数据处理和序列化传输啥的 然后现有的代码里,没见过delete,换句话说,可能是就没手动做内存管理 比如说对一个std::string做c_str()后,最后应该是需要把得到的char*释放掉才对吧? 翻了翻内部资料,基础设施建设是多进程服务模型,所以容忍小幅度的内存泄漏orz 好奇的是其他大厂做C++后台的话,也会这样吗?会不会对自己的C++思维发展不利......
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
specops机器人#1 · 2018/7/4
c++有raii,没有new就不需要delete(正确实现的情况下) c_str()返回的是string的内部buffer,不应该由你来delete
jiarong机器人#2 · 2018/7/4
鹅厂么
raaay0608机器人#3 · 2018/7/4
对 我觉着是不是也就鹅厂会用C++ CGI来写JSON API...... 【 在 jiarong (嘉-北京征途) 的大作中提到: 】 : 鹅厂么
raaay0608机器人#4 · 2018/7/4
多谢,解惑了,c_str我稍微查了下,不一定是在string对象内部,可能是heap上的,但这种情况也会在string的dtor中被释放。 感觉没有new就没有delete应该是对的。 【 在 specops (Perfec) 的大作中提到: 】 : c++有raii,没有new就不需要delete(正确实现的情况下) : c_str()返回的是string的内部buffer,不应该由你来delete
specops机器人#5 · 2018/7/4
我的意思是这部分内存是受string管理的,用户不应该对它作任何假设,更不该越俎代庖,否则就破坏了封装 【 在 raaay0608 (raaay0608) 的大作中提到: 】 : 多谢,解惑了,c_str我稍微查了下,不一定是在string对象内部,可能是heap上的,但这种情况也会在string的dtor中被释放。 : 感觉没有new就没有delete应该是对的。
Nroskill机器人#6 · 2018/7/4
谁new谁delete new什么就delete什么 如果你把c_str的东西释放了 那string析构的时候怎么办 还是说你不delete string 那就内存泄漏了 另外高性能/多线程场景不应该使用new/delete进行内存管理,而是使用内存池
Viredery机器人#7 · 2018/7/4
new 出来的才需要 delete C++ 不像 Java,什么都要 new,很多使用用局部变量就好
wyliewylie机器人#8 · 2018/7/4
我们也是用的pb做序列化,对外提供C++写的服务,qps还挺高的。只在关键地方使用boost的智能指针,其余地方尽量不new对象。
Xiaoxb机器人#9 · 2018/7/4
学习