C++ 没有 DELETE 宏的原因

2024-04-16

在那儿任何好的理由(也许除了“宏是邪恶的”)不使用以下宏?

#define DELETE( ptr ) \
if (ptr != NULL)      \
{                     \
    delete ptr;       \
    ptr = NULL;       \
}

#define DELETE_TABLE( ptr ) \
if (ptr != NULL)            \
{                           \
    delete[] ptr;           \
    ptr = NULL;             \
}

我个人比较喜欢下面的

template< class T > void SafeDelete( T*& pVal )
{
    delete pVal;
    pVal = NULL;
}

template< class T > void SafeDeleteArray( T*& pVal )
{
    delete[] pVal;
    pVal = NULL;
}

他们最终编译成完全相同的代码。

可能有一些奇怪的方法可以破坏 #define 系统,但是,就我个人而言(这可能会让我抱怨;)我认为这不是什么大问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 没有 DELETE 宏的原因 的相关文章

随机推荐

  • 在钥匙串中找不到有效的 iOS 代码签名密钥。您需要申请协同设计证书

    因此 我构建了一个 Xamarin Forms 应用程序 现在我想在物理 iOS 设备上进行测试 调试器成功运行了我的程序 但不幸的是 当我在物理 iPhone 上部署程序时遇到了问题 为了部署我的应用程序 我执行了以下操作 按照本教程为我
  • 仅当尚未设置时才进行原子设置

    仅当尚未在 Redis 中设置时 是否有办法执行原子设置 具体来说 我正在创建一个像 myapp user user email 这样的用户 并且希望 Redis 在 user email 已被占用时返回错误 而不是默默地替换旧值 比如声明
  • node.js/angular.js - 无法获取

    我有根路径并且工作正常 我还有另一条路线 127 0 0 1 3000 dashboard 如果我只是在地址栏中输入该 url 我会收到此错误 无法获取 仪表板 如果我创建一个指向相同网址的链接 它就可以正常工作 如果我刷新该页面 我会再次
  • 如何递归探索Python嵌套字典? [复制]

    这个问题在这里已经有答案了 我很好奇是否有一种方法可以在 python 中递归地探索嵌套字典 我的意思是 假设我们有一个如下示例 d a b c 1 2 3 获取最里面字典的内容需要什么代码 c 1 2 3 遍历a and b 在这种情况下
  • userLocation:纬度/经度返回零?

    我只是在查看 mapKit 并决定创建一个快速按钮来显示我当前的位置 但是当我按下该按钮时 我的纬度 经度始终显示为 0 000000 0 000000 地图视图已加载 因为在按下按钮之前我可以在模拟器上看到地图 以前 我通过使用 core
  • 向 Web 应用程序的所有 HTML 元素添加 ID 属性?

    目前 我正在使用 RoR MySQL HTML CSS 和 jQuery 等构建一个 Web 门户 我收到自动化测试工程师的请求 要求向我的应用程序的所有元素添加 ID 属性 如果可能的话 还有 NAME 属性 我对此感到困惑 也许我不确定
  • Bootstrap 卡头 - 所有卡头高度相同

    我在两个网页上使用引导卡 在一页上 标题文本是固定的 因此我可以使用 min height 来匹配其卡片标题高度 在第二页上 将生成这些卡片 因此我不知道文本长度和单词 我希望连续的所有卡头都具有相同的高度 有没有办法根据一行中最大的卡头计
  • 使用 xpose 挂接一个以自定义类数组作为参数的方法

    如何挂钩包含自定义类数组的方法 Lcom samsung android uniform widget notification NotificationItem 这就是 smali 论证 我可以上课XposedHelpers findCl
  • 显示从 SBT 构建发出的确切 scala 命令

    当我针对本地版本的 Scala 构建我的 相对复杂的 SBT 项目时 出现以下错误 scalac error bad option Ydelambdafy method 这可能是一个错误scalac或我们的构建文件 但是 我无法在调用时重现
  • 无法在守护进程模式下运行 Ansible

    我可以运行 Ansible 像守护进程一样管理我的主机吗 例如 我有时会更改我的剧本 但我不想手动运行 ansible playbook main yml 请不要建议 crontab 有一个特定的点 我不能在生产服务器上使用 crontab
  • sun.* 包发生了什么

    我在 JDK 7 文档中没有找到任何关于sun 包 是否已弃用 但替代品是什么 For eg sun reflect 已被弃用 那么现在有什么选择呢 如果有人可以发布已弃用的软件包和可用的新选项 那就太好了 Note I succeded
  • c中如何检查字符串中的重复字符

    我正在尝试创建一个程序来检查命令行参数字符串中的重复字符 该字符串假定仅包含 26 个字符 并且所有字符都必须是字母顺序的 但是 字符串中不能有任何重复的字符 每个字母字符只能出现一次 我弄清楚了程序的前两部分 但我不知道如何检查重复的字符
  • 多线程代理检查器

    我有很少的代码 例如 using WebClient wc new WebClient wc Proxy new WebProxy IP Port resume if wc IsBusy string rtn msg string Empt
  • 使用 php 从 mysql 删除逗号

    我有一个列名称战斗机 其中包含 mysql 中的一些值 例如 战士 摇滚 约翰 塞纳 承办人 所以 我希望当我在浏览器中显示它时 它应该看起来像 Rock 约翰 塞纳 送葬者 我只想使用 PHP 从数据库中删除逗号 任何帮助将不胜感激 Gi
  • Tweetsharp 授权不呈现 oauth 令牌

    我正在尝试在我的 asp net mvc 3 应用程序中实现 tweetsharp 但遇到了问题 我使用以下设置创建了一个新的 Twitter 应用程序 申请网站 http 127 0 0 1 8545 http 127 0 0 1 854
  • 当互联网连接或断开时收到通知

    我有一个在 Net 4 0 客户端下开发的 WPF 和 C 桌面应用程序 必须根据 PC 上的互联网是否可用来显示或隐藏某些数据的框架 这意味着我必须能够尽快检测到互联网是否断开或连接 以便做出反应 例如 断开无线网络或拔掉网络电缆 当我进
  • Angular 6 构建中的 style.js 是什么

    偷看html源代码 我使用 sass 使用 ng 6 构建 SPA 我找到了这些文件列表 我想知道 style js 是做什么用的 我正在
  • VIM自动插入PHPdoc

    有没有办法使用命令或组合键在 VIM 中插入 PHPDoc 例如 我有一堂课 class MyClass public function construct public function destruct command here to
  • 没有扩展名的文件名叫什么?

    给定文件名foo bar baz 我们可以说foo is the dirname bar baz is the basename and baz is the extname 但是有没有一个类似的术语可以用来表示foo bar or bar
  • C++ 没有 DELETE 宏的原因

    在那儿任何好的理由 也许除了 宏是邪恶的 不使用以下宏 define DELETE ptr if ptr NULL delete ptr ptr NULL define DELETE TABLE ptr if ptr NULL delete