为什么它不会无限循环
Why it is not going in infinite loop
我是 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
请有人就此提供建议。
你的程序不会进入无限循环是因为你在重载new
运算符的语句中使用范围解析return
这意味着你没有在这里调用你自己的new
。
要使其进入无限循环,请将其更改为
return operator new(sz);
我希望这有所帮助。
相关文章:
- 为什么这段代码会导致无限循环?
- 为什么这种方法会进入无限循环?
- 试图找出为什么我的代码保持无限循环
- 为什么这个递归函数会创建一个无限循环?
- 为什么无限循环会延迟打印?
- 如何找出为什么我的程序一直有一个无限循环?
- 为什么我的代码在 c++ 中无限循环.我的代码需要反复提示用户
- 异常基础知识:为什么 while 循环会变成无限循环?
- 为什么这会导致无限循环?
- 为什么我有一个无限循环,我如何以不同的方式做到这一点
- 打电话给功能后,为什么我会陷入无限循环中
- 为什么输出会进入无限循环
- 为什么我会得到一个无限循环(因子)?
- 为什么我的埃拉托色尼代码筛子无限循环.我已经用几个数字进行了测试
- 为什么输入流无法识别 Ctrl D 并给出无限循环
- 为什么这段代码陷入无限循环?
- 为什么我总是得到一个无限循环
- 为什么要(;;);无限循环
- 为什么当用户输入除整数之外的任何内容时,我的程序会无限循环输出?C++
- 无限循环,我不知道为什么