我怎么能禁止在C++代码的某些部分使用"new"?

Dan*_*anS 2 c++ memory memory-management new-operator

是否可以防止在代码中的某些点使用new?

我正在开发的遗留代码要求在引导程序完成后没有动态内存分配.我们现在想测试一下.

如果我从头开始开发,那么我可以编写自己的包装器并使用它,或者在公共基类中重载operator new.

有没有办法重载全局新的然后调用它?

sha*_*oth 5

不,你不能"超载"全球new- 只能替换它.但是,在您的替换中,您可以检查全局标志,意味着"允许新"(并且如果未设置该标志则抛出异常)并从调用代码内部更改该标志.operator new除非您将每个重载更改为也尊重该标志,否则这对于在类中重载无效.