c++ - 如何防止在 C++ 中无意中互换使用 delete 和 free?

标签 c++ memory-management free

deletefree 何时可以在 C++ 中互换使用?

我的担忧如下:假设在使用 malloc/free 时存在不正确的混淆,并且 new/delete(更不用说new[]/delete[])。但是 deletefree 做同样的事情;
幸运的是,这在测试中没有被发现。稍后这可能会导致生产崩溃。

我怎样才能强制执行某种检查来防止这种情况发生?如果两者混淆,我可以得到警告吗? 如果不是在编译时,也许是在运行时进行一些代码检测?我将如何接近 这个?

这个问题的目的是找到方法来避免在用法中无意中混淆。

最佳答案

不混淆它们的简单方法是永远不要使用 malloc(),这样您就永远不会想调用 free()。为避免此问题而创建的基础架构称为“代码审查”,但在这种情况下,代码库上的快速“grep malloc(”或“grep free(”可能就足够了。

关于c++ - 如何防止在 C++ 中无意中互换使用 delete 和 free?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166507/

相关文章:

c++ - 编译时对 boost::system::system_category() 的 undefined reference

c++ - 计算 std::vector 的复制和 move 次数

c - 在函数中分配动态数组并将其发送回 C 中的调用者

c - 为什么没有出现 "Warning C4172 returning address of local variable or temporary"错误?

android - 如何强制Android上的内存泄漏导致崩溃?

c++ - 破译 CMake 错误

c++ - 使用 GLM 的最佳 glMatrixMode() 是什么?

c - 如何在 C 中正确使用 strtok 以防止内存泄漏?

c - int 数组的动态内存分配

c - 正确使用更改数据的自由功能