189 8069 5689

STL之operatornew函数-创新互联

在STL源码剖析中有提到operator new 这个函数,然后也有说道new 的下面会调用operator new,博主觉得这段话有问题,原因有二:
1、operator 是操作符的关键字,比如我们要重载一个操作符,我们的写法肯定是 operator xxx(xxx,xxx....),所以书中提到的调用operator new,我并不赞同,我觉得new 等同于 operator new
2、在C/C++里面,调用一般是涉及到函数层次的,谁调用谁,调试的时候也是有跳转的,然而博主在调试的时候,并没有看到new所在的函数,反而是直接跳到了operator new。下面给出博主的调试信息。

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的耀州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

博主不太会截视频,就用一系列的图片来说明吧!
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数

我们再看一下 数组的形式
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数
STL  之  operator new 函数

这里进去了operator new[] 里层调用了operator new,但是这里并没有看到 new [] 所在的函数,而是直接跳转到了这里,可见new [] 等同于 operator new[],那么可以推测new 也是等同于 operator new的

还有一点,在我另一个博客(CSDN)也有吐槽过,操作符可以用函数名来调,也可以用typedef 以后的名称来调。
STL  之  operator new 函数
所以书中说new 调了operator new,太草率,没有足够的证据。

当然书中说 operator new 调了malloc,这点暂时是没错的,也请不要怀疑。

以上为博主自己的拙见,不足之处还请指正。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:STL之operatornew函数-创新互联
本文路径:http://jkwzsj.com/article/ddjdgp.html

其他资讯