为什么这么多年了,没人对C++的内存管理进行改进?

论坛 期权论坛 期权     
时光   2018-10-15 22:51   7674   9
分享到 :
0 人收藏

9 个回复

倒序浏览
2#
熊起  3级会员 | 2018-10-15 22:51:14 发帖IP地址来自
内存管理以及对内存的使用权限,事关语言的核心范式,直接影响语言内置的Object,以及反射等根本概念的实现。
你想象一下带垃圾回收的语言里能不能有这种代码:
struct holder
{
byte buf[N];
T* get(){return reinterpret_cast(buf);}
T* create(){return new(buf)T;}
};
3#
匿名用户   | 2018-10-15 22:51:15 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
4#
Bila  1级新秀 | 2018-10-15 22:51:16 发帖IP地址来自
内存这件事,永远是众口难调,最后还是扔给你们自己去吃这坨shit吧,或者让别人给你包装成金粒餐来吃。但是无论大厨多牛逼,总有其他口味的人
5#
wape.yang  4级常客 | 2018-10-15 22:51:18 发帖IP地址来自
C + + 他爹和委员会那些人,根本就对gc 之类的不感冒,C+ +他爹之前的文章,短文,有介绍过,gc的问题,世界上根本不存在什么完美的gc自动管理
6#
币哥  2级吧友 | 2018-10-15 22:51:19 发帖IP地址来自
内存管理改进?但总要有一种语言让人开发自己管理内存的程序吧?不然你想要的自动管理内存的功能从哪里来?c++就是让你开发自动管理内存程序的,比如有了java,所以c++就是让你自己管理内存而存在的。
7#
VeroFess  3级会员 | 2018-10-15 22:51:20 发帖IP地址来自
不是没人写…是你不知道

我们一票人都尝试实现过
8#
郭忠明  2级吧友 | 2018-10-15 22:51:21 发帖IP地址来自
我们团队对c++的内存管理做了不少改进,技术方案讨论中我们甚至有彻底重写malloc和free全部代码的思考,已有方案的cpu cache不够友好,理论上应该可以设计出比tcmalloc更好的库,但是考虑到代码总长度和测试的时间,最底层malloc和free就不改了。为了用尽可能少的代码在产品中尽快解决最迫切的问题,目前的实现是基于重写shared_ptr, 一方面实现了完全线程安全,另一方面实现了gc垃圾内存回收和对象再利用recycle, gc的机制刚好可以配合实现完全线程安全,对象recycle机制可以实现更快的性能。另外,使用方法上与std库make_shared全兼容,只要对象被shared_ptr封装,那么就是一个支持全新内存管理模式的对象。综合性能上,远超java的机制,也远超现有c++的性能,我们用此库重新实现了memcache, 查询性能比原生用c语言开发的版本快70%。下载测试 http://www.haisql.com
9#
乔捷  3级会员 | 2018-10-15 22:51:22 发帖IP地址来自
除了没有GC,其他改进还是有很多的,很多答案都提了,不重复了。至于给C++加上GC的支持,难度比较大,需要引入新的语法机制,比如说引入gc堆、gc指针和gcnew,同时保持原生堆和原生指针不变以向下兼容,但是这方面的改动估计很难达成一致,所以GC是不太可能出现在C++里了,要用GC唯有放弃C++了。
10#
丁超  3级会员 | 2018-10-15 22:51:23 发帖IP地址来自
菜逼回答一发。c++这门语言还是偏底层。而底层的内存管理是个客观存在的问题。所以只要c++依然是偏底层的语言的话,内存管理就是个核心跨越不过去的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP