为什么它不会无限循环

拉文德拉·古普塔(Ravindra Gupta)

我是C ++的新手,正在尝试对new和delete关键字进行运算符重载的程序。在研究特定于类的重载示例时,我找到了以下程序。

#include <iostream>
// class-specific allocation functions
struct X {
    static void* operator new(std::size_t sz)
    {
        std::cout << "custom new for size " << sz << '\n';
        return ::operator new(sz);
    }
    static void* operator new[](std::size_t sz)
    {
        std::cout << "custom new for size " << sz << '\n';
        return ::operator new(sz);
    }
};
int main() {
     X* p1 = new X;
     delete p1;
     X* p2 = new X[10];
     delete[] p2;
}

我对上述程序正在运行感到惊讶。当我们为new和delete关键字编写自己的代码时,同时我们也在使用它。以我的想法,它应该进入无限循环。但是它工作正常。请在下面找到结果。

custom new for size 1
custom new for size 10

请有人对此提出建议。

阿比舍克

您的程序不会进入无限循环,因为您在return重载new运算符的语句中使用范围解析,这意味着您不会new在此处调用自己的

要使其陷入无限循环,请将其更改为

return operator new(sz);

我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么无限循环?

来自分类Dev

无限循环。为什么?

来自分类Dev

为什么它不会消失?

来自分类Dev

为什么这不会引起事件的无限循环?

来自分类Dev

为什么这段代码不会引起无限循环?

来自分类Dev

为什么这无限循环?

来自分类Dev

JavaScript“如果”-为什么它不会失败?

来自分类Dev

为什么这while循环是无限循环?

来自分类Dev

为什么这while循环是无限循环?

来自分类Dev

为什么此Python代码不会在__hash__中造成无限循环?

来自分类Dev

为什么在循环开始时调用requestAnimationFrame不会导致无限递归?

来自分类Dev

为什么无限循环不会使CPU使用率达到100

来自分类Dev

为什么(递归地)调用自身的成员方法不会进入无限循环?

来自分类Dev

为什么无限循环在使用Promela和Spin进行模型检查时不会导致错误?

来自分类Dev

在这种情况下,为什么useEffect不会遇到无限循环?

来自分类Dev

为什么迭代无序:: map和添加新元素不会导致无限循环?

来自分类Dev

为什么在bash管道上使用`yes'不会*导致无限循环?

来自分类Dev

为什么此归类排序功能不会导致无限循环?

来自分类Dev

为什么while循环无限重复?

来自分类Dev

为什么序言进入无限循环?

来自分类Dev

递归函数-为什么不无限循环?

来自分类Dev

为什么这个C程序无限循环?

来自分类Dev

无限循环,不确定为什么

来自分类Dev

为什么这会导致无限循环?

来自分类Dev

为什么这个bash while循环是无限的?

来自分类Dev

为什么此代码无限循环?

来自分类Dev

ConcurrentHashMap的卡在无限循环 - 为什么?

来自分类Dev

为什么这个循环不是无限

来自分类Dev

为什么我的python while无限循环?

Related 相关文章

热门标签

归档