在 C 中释放 NULL 指针是一个好习惯吗? [复制]

2024-04-30

可能的重复:
ptr 为 NULL 的 free(ptr) 是否会损坏内存? https://stackoverflow.com/questions/1938735/does-freeptr-where-ptr-is-null-corrupt-memory

我正在编写一个 C 函数,它会释放一个指针(如果它是)malloc()编辑。指针可以为 NULL(在发生错误并且代码没有机会分配任何内容的情况下)或分配为malloc()。使用安全吗free(ptr);代替if (ptr != NULL) free(ptr);?

gcc一点也不抱怨,即使-Wall -Wextra -ansi -pedantic,但这是好的做法吗?


引用C标准,7.20.3.2/2来自ISO-IEC 9899 http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf:

void free(void *ptr);

If ptr是空指针,不发生任何操作。

不检查NULL,它只会添加更多的虚拟代码来读取,因此是一种不好的做法。


但是,您必须always检查NULL使用时的指针malloc&公司在这种情况下NULL意味着出了问题,很可能没有可用的内存。

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

在 C 中释放 NULL 指针是一个好习惯吗? [复制] 的相关文章

随机推荐

  • 是否可以将密码以纯文本形式存储在 php 变量或 php 常量中?

    根据问题 在 php 页面上存储密码是否安全 例如 password pa w0rd 如果用户看不到它 那就安全了 对吗 编辑 确实有人建议使用hash 但是数据库服务器连接密码会有问题不是吗 简短的回答是否定的 而且要看情况 以纯文本形式
  • 如何从Java中的sqlite中的多个表中进行选择?

    我正在尝试学习如何在 java 程序中使用 sqlite 数据库 不是安卓 我去了this https bitbucket org xerial sqlite jdbc overview链接 下载 jdbc 库并复制示例 该示例运行正常 没
  • 有什么方法可以处理 HTTP/2 Goaway 在 HttpClient java 中收到的 IOException 吗?

    我在应用程序中进行 API 调用 在某个时候它会随机抛出java io IOException 149 222 1 1 553232 GOAWAY received 使用Java 11环境 无论如何要解决此异常而不是迁移到 Http 1 1
  • Facebook 错误代码列表

    我正在寻找当您尝试使用 Graph API 获取信息时 Facebook 可以返回的所有列表 有人可以帮忙吗 Facebook 返回 400 HTTP 错误和 JSON 内容 例如 error type OAuthException mes
  • 如何使用 PHP 返回 JQuery .ajax() 的正确成功/错误消息?

    我不断收到错误警报 MYSQL 部分没有任何问题 查询被执行 我可以在数据库中看到电子邮件地址 客户端
  • 理解 htonl() 和 ntohl()

    我正在尝试使用 unix 套接字来测试向本地主机发送一些 udp 数据包 据我了解 当设置 ip 地址和端口以发送数据包时 我会填写我的sockaddr in将值转换为网络字节顺序 我在 OSX 上 我很惊讶这个 printf ntohl
  • 添加类方法后如何更新类的实例?

    我发现自己陷入了困境 我开发了一个类 然后创建了该类的一个实例 这些类通常会执行数据和统计操作 这些操作需要很长时间 有时需要 20 分钟 我将继续开发我的类 并向其中添加其他方法 现在 如何使用新方法更新以前的类实例而不重新初始化该类的旧
  • Facebook API v3 -publish_to_groups 不工作

    我正在尝试更新我的应用程序以使用新的组权限 特别是publish to groups oauth 过程工作正常 但是当我发帖时我得到 200 需要publish actions权限 或者manage pages和publish pages作
  • 在最新的 Spring v4 中使用 @RequestBody 和可选主体

    使用时如何在 REST API 调用中使正文可选 RequestBodySpring中的注解 使用 Spring 的最新版本 如果您使用 RequestBody注释 它使客户端始终发送正文而不使其可选 I tried RequestBody
  • 如何在文件中固定数量的字符后插入换行符

    我正在寻找一个 bash 或 sed 脚本 最好是单行脚本 用它可以在巨大的文本文件中的固定数量的字符之后插入一个新行字符 像这样的事情怎么样 Change 20 是换行符之前的字符数 temp text 是要替换的文件 sed e s 2
  • 与 NA 匹配的值 - 缺失值 - 使用 mutate

    我有点卡住了 有没有比下面更好的方法来进行值匹配 将 NA 视为 实际值 mutate library dplyr data foo lt data frame A c 1 2 NA 4 NA B c 1 3 NA NA 4 不是所需的输出
  • 如何从 XBAP 关闭浏览器?

    我正在完全信任地使用 XBAP 应用程序 单击按钮时 我需要关闭托管 XBAP 的浏览器 我怎样才能实现这个目标 Application Currenty ShutDown 仅关闭应用程序 使浏览器保持空白 我知道这是一个非常老的问题 但如
  • 文件保存期间语法突出显示随机消失

    我正在使用 vim 编辑一些 python 文件 最近偶尔会出现在 vim 中保存缓冲区后语法高亮消失的情况 我尝试重置syntax on and set filetype python但无济于事 我根本不知道是什么原因导致了这个问题 所以
  • 如何从 WP_User 对象获取 WordPress 用户的名字?

    我正在写一个基本的插件 这是我的代码 new user get userdata user id user id is passed as a parameter first name1 new user gt user firstname
  • TextField“更改”事件仅在模糊时触发

    通常 Change 事件将在 TextField 失去焦点 模糊 后触发 但我需要它在字段值发生变化时立即触发 而不需要失去对该字段的关注 KeyListener 不会删除它 因为该值可能来自条形码扫描仪等 有什么办法可以做到这一点吗 提前
  • 更新到 Android SDK 工具 R22

    我也将 SDK 工具和 ADT 插件更新到了 R22 在更新之前一切都运行良好 但从那以后 我遇到了问题 基本上我有 2 个库项目和一个应用程序项目 我的一个库项目在 libs 文件夹中包含一些 jar 文件 这些 jar 之一在应用程序项
  • 路由器解析器不渲染组件

    我有这个路由器解析器来从 Google Firestore 检索数据 我正在尝试使用解析器来提前获取数据 当我将调试器放置在解析函数中时 它会显示从服务器检索的数据 但它永远不会从resolve 方法返回 谁能帮我一下 路由模块 const
  • 使用 javascript 复制到所有浏览器的剪贴板

    我试图让 复制到剪贴板 适用于所有浏览器 但运气不好 我正在使用 javascript 但我不想使用零剪贴板 http zeroclipboard org to do 请让我们知道我的代码有什么问题 感谢您的帮助 下面是代码 目前我的代码仅
  • jQuery 创建多维数组

    我花了很长时间试图弄清楚如何在 jQuery 中创建多维数组 我在循环之外实例化数组 在循环内部我想添加数组元素 i 0 loop start
  • 在 C 中释放 NULL 指针是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 可能的重复 ptr 为 NULL 的 free ptr 是否会损坏内存 https stackoverflow com questions 1938735 does freeptr where ptr is nu