对指针调用 free 两次

2024-02-07

我在讲座中被教导,召唤free()两次使用指针真的非常非常糟糕。我知道这是一个很好的做法,将指针设置为NULL,在释放它之后。

然而,我仍然没有听到任何关于为什么会这样的解释。据我了解,方法malloc()有效,从技术上讲,它应该跟踪它已分配并供您使用的指针。那么为什么它不知道它是否通过接收到一个指针free()已经被释放了吗?

我很想了解,当您致电时,内部会发生什么free()在先前已被释放的位置上。


当你使用malloc您告诉 PC 您想在堆上为您保留一些内存位置。计算机返回一个指向寻址空间第一个字节的指针。

当你使用free您实际上是在告诉计算机您不再需要该空间,因此它将该空间标记为可用于其他数据。

指针仍然指向该内存地址。此时堆中的相同空间可以由另一个返回malloc称呼。当你调用free第二次,您不会释放以前的数据,而是释放新数据,这可能对您的程序不利;)

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

对指针调用 free 两次 的相关文章

随机推荐

  • WebGL / Three.js - 移动相机时,纹理着色的粒子不规则地闪烁

    这是一个jsfiddle http jsfiddle net vko8hzzs 4 我将粒子在使用纹理着色时以及相机移动时 闪烁 的问题放在一起展示 更新 粒子上不应该发生动画或运动 如果当您在视口上单击并拖动并且粒子闪烁或完全改变颜色时
  • bash:grep 根据第一列精确匹配

    我有一个如下所示的 txt 文件 9342432 A1 9342432 1 0 0 0 4392483 A2 4392483 2 0 0 0 4324321 A3 4324321 1 0 0 0 9342432 9342432 2 0 0
  • 点击时如何更改 UIView 的样式?

    我使用以下代码制作不同的 UIView 可点击 它们不是从 UIControl 继承 UITapGestureRecognizer gesture UITapGestureRecognizer alloc initWithTarget se
  • 什么是cgi编程

    CGI编程到底是什么意思 如果我用 C 编写一个cgi程序 在这种情况下 cgi 是什么意思 servlet 环境是经典 cgi 编程的抽象吗 CGI 表示通用网关接口 它是一个 Web 服务器 接收用户请求并进行处理 然后将响应发送回用户
  • 在 ASP.NET 中,什么时候应该使用 Session.Clear() 而不是 Session.Abandon()?

    Session Clear 和 Session Abandon 都会删除会话变量 据我了解 Abandon 结束当前会话 并导致创建新会话 从而导致结束和开始事件触发 在大多数情况下 例如注销用户 最好调用 Abandon 在某些情况下我会
  • 如何在触发器调用的过程中使用COMMIT

    我有下面的触发器 mytrg 它调用一个过程 myproc 如果表1中有任何插入 该过程将更新表2 在表2中更新数据后 我在过程中有 COMMIT 语句 但是当 table1 中有插入时 我收到以下错误 Error report SQL E
  • 使用动画重新加载表视图单元格(Swift)

    有没有办法重新加载特定的UITableView具有多个带有动画部分的单元格 我一直在使用 self TheTableView reloadSections NSIndexSet index 1 withRowAnimation UITabl
  • 在 Facebook 上发帖 - 错误 - 用户必须是该页面的管理员才能冒充该页面

    我自动将新闻从网站发布到 Facebook www rybnik com pl gt rybnikcompl 几个月来效果很好 但两天前我注意到错误 用户必须是该页面的管理员才能冒充该页面 据我所知 用户 应用程序权限 访问令牌等没有任何变
  • Bash 命令从远程 url 复制图像

    我用的是mac的终端 我想从远程网址复制图像 http media pragprog com titles rails4 code depot b public images http media pragprog com titles r
  • 如何将日期字符串转换为字符串(yyyy-MM-dd)。这样做时,我得到空值?

    我的数据为 customerFromDate 01 Apr 2010 和 customerToDate 30 Apr 2010 这是一个字符串 我想将该格式转换为字符串 yyyy MM dd 但这样做时我得到了空值 请参阅我尝试过的以下代码
  • 允许自定义文件在加载数据时双击并打开我的应用程序[重复]

    这个问题在这里已经有答案了 就像您在 Windows 中进行引用一样 要打开 txt 文件 它可能会打开 NotePad exe 和 或 Word exe 同时将文件中的文本加载到编辑器中 如何使用我的桌面应用程序执行此操作 我有一个扩展名
  • 使用 css 媒体查询触发 jquery

    我在我的项目中使用 css 媒体查询来创建一个适用于任何尺寸屏幕的网站 我希望触发不同的 jquery 函数 就像使用 css 一样 例如 如果浏览器尺寸在1000px到1300px之间 我想调用以下函数 mycarousel jcarou
  • 日志填充为:与远程主机的通信发生错误

    我们正在尝试了解此错误发生的情况 这只是用户与网站断开连接吗 System Web HttpException An error occurred while communicating with the remote host The e
  • Chrome 的 rem 计算在 Mac 和 Windows 上的字体大小和行高之间有何差异?

    我整理了一支非常基本的笔来演示这里发生的事情 https codepen io anon pen ZjbmWE https codepen io anon pen ZjbmWE 为那些没有 Mac 的人提供一个屏幕截图 https i st
  • Span 不能是嵌套局部变量。为什么这是一个限制?

    以下内容无法编译 既然这不是匿名方法 lambda 表达式或查询表达式 为什么这是一个限制 将文本作为 ref ReadOnlySpan 传递效果很好 void TestNestedSpan var text Some text AsRea
  • Colorbox 使灯箱在滚动时固定

    我使用 jquery colorbox 当页面内容较大并且打开colorbox时 然后颜色框随着页面内容滚动 我希望即使背景内容滚动也需要修复颜色框 请帮我解决这个问题 也许所有这些答案都来自 colorbox 的早期版本 但 fixed
  • Java 颠倒文本 - 错误还是功能?

    在使用 Java 字体类和 Swing 时 我将字体大小设置为负值 我发现这会使文本被颠倒绘制 这是一个错误还是一个功能 谁能解释为什么会发生这种行为 试试看 import java awt Font import java awt Gra
  • 在 aspx 中包含 C# 文件代码

    我想在我的位置执行以下代码C 页 我知道这里还有更多类似的问题 但我找不到可以帮助我的东西 但是我在第一行收到服务器错误 The server block is not well formed 代码是 WebIntegrationRestS
  • “好”数字的算法

    如果数字 x 的任意两个连续数字之和在 k 和 2k 之间 则给定数字 x 是 好 我需要找到一种算法 对于给定的数字 k 和给定的数字 n 找出存在多少个 好 n 位数字 我在 PHP 中为此实现了一个实现 但复杂性太大 我正在搜索所有这
  • 对指针调用 free 两次

    我在讲座中被教导 召唤free 两次使用指针真的非常非常糟糕 我知道这是一个很好的做法 将指针设置为NULL 在释放它之后 然而 我仍然没有听到任何关于为什么会这样的解释 据我了解 方法malloc 有效 从技术上讲 它应该跟踪它已分配并供