悬空指针,free()后值改变的原因?

2023-11-30

在下面的代码段中,之后free(x), 为什么y变成0?

根据我的理解,所指向的堆中的内存x,并且仍然被指出y,还没有分配给别人,怎么会变成0呢?

而且,我不认为这是free(x)这将其更改为 0。

任何意见?

#include <stdio.h>

int main(int argc, char *argv[])
{
    int *y = NULL;
    int *x = NULL;

    x = malloc(4);
    *x = 5;

    y = x;
    printf("[%d]\n", *y); //prints 5

    free(x);

    printf("[%d]\n", *y); //why doesn't print 5?, prints 0 instead

    return 0;
}

这是未定义的行为,解释只是猜测。

我可以推测您可能正在运行 C 库的调试版本,并且 free() 的调试版本会将指向的区域归零。

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

悬空指针,free()后值改变的原因? 的相关文章

随机推荐

  • 为什么当我执行performSelectorInBackground:时没有自动释放池?

    我正在调用一个在后台线程中运行的方法 self performSelectorInBackground selector loadViewControllerWithIndex withObject NSNumber numberWithI
  • 每个 Flash 上传器都会给出错误的进度值

    我去年初为内部网站编写的文件上传脚本在许多机器上表现得很奇怪 在某些机器上它始终工作正常 而在其他机器上它始终表现不佳 我在使用 YUI Uploader SWFUpload 2 2 和 2 5a 和 Uploadify 时遇到完全相同的问
  • MutableLiveData 中 setValue() 和 postValue() 的区别

    有两种方法可以使变化值MutableLiveData 但有什么区别setValue postValue in MutableLiveData 我找不到相同的文档 这里是班级MutableLiveData安卓的 package android
  • 改变矩阵维度

    让我们举一个可复制的例子 这是我的初始矩阵 d lt matrix 1 80 5 d 1 2 3 4 5 1 1 17 33 49 65 2 2 18 34 50 66 3 3 19 35 51 67 4 4 20 36 52 68 5 5
  • 在 asp net mvc 5 中使用会话变量进行授权

    所以我的项目需求发生了变化 现在我想我需要构建自己的操作过滤器 所以 这是我当前的登录控制器 public class LoginController Controller GET Login public ActionResult Ind
  • 如何随机均衡不相等的值?

    假设我有多个不相等的值 a b c d e 是否可以仅通过随机数生成将这些不相等的值变成相等的值 示例 a 100 b 140 c 200 d 2 e 1000 我希望算法随机定位这些集合 以便最常定位最大值 而大多数情况下只保留最小值 我
  • 当列类型为 nvarchar 时,将表与列值总和一起旋转

    我有一个具有以下结构的表 我想转置它 BookId Status 123A Perfect 123B Restore 123C Lost 123D Perfect 123A Perfect 123B Restore 123A Lost 12
  • rpy2 在 Windows 7 上安装

    我试图在我的计算机上安装 rpy2 但无法做到这一点 我下载了源码包 并尝试使用命令安装Rpy2 rpy2 2 3 2 python setup py install 这是结果 running install running build r
  • 我想获取 SD 卡中的音频文件

    在我的应用程序中我想设置ringtone当我接到来电时 如何打开SDCARD并得到音频文件并列出它 如何获得URI对于所选的audio file MediaScanner 为您查找音乐 填充 MediaStore 数据库 下面是一些查找音乐
  • 使用可选参数和命名参数解决歧义

    我的项目有两种方法 定义如下 void Person int ID double height 0 0 string team Knights my codes void Person int ID double height 0 0 st
  • 如何组合两个机器学习算法的输出?

    如果我有两个非常不同的数据集和两种非常不同的分类技术 是否有一个很好的方法来组合这两个输出 我知道平均值可能有效 但有没有更相关的方法来做到这一点 我听说过一些概念 例如增强学习和集成学习 这些概念是否适用 解决这个问题有两种一般方法 第一
  • 使用部分可变参数调用函数

    考虑我有以下内容 void bar int a int b template
  • 如何设计 HTML5 表单验证消息的样式? [复制]

    这个问题在这里已经有答案了 假设你有一些像这样的 HTML
  • 使用 .htaccess 来屏蔽域名?

    所以这是场景 我拥有的域名是 www abc com 我想将其指向 属于另一家公司 问题 如何使用 htaccess 转发和屏蔽 URL 使其保持为 www abc com 从安全角度来说 为www abc com购买数字证书有什么意义吗
  • 未处理的拒绝(TypeError):ships.reduce 不是函数

    我使用特定的 API 构建了一个船可视化器 API 返回一个 json 响应 我将其注入到表中 问题 有时在白天 我注意到应用程序会停止工作并抛出以下实例 Unhandled Rejection TypeError ships reduce
  • numpy einsum:嵌套点积

    我有两个n by k by 3 arrays a and b e g import numpy as np a np array 1 2 3 3 4 5 4 2 4 1 4 5 b np array 3 1 5 0 2 3 2 4 5 1
  • Mockito 和 PowerMock MethodNotFoundException 被抛出

    当使用 Powermockito 和 Mockito 为我围绕 Hikari CP 制作的连接池构建一些简单的单元测试时 遇到以下错误 测试的设置如下 让我感到困惑的是 我有一大堆未显示的单元测试 它们都使用相同的设置和方法通过了 仅此一个
  • 在 ARCore unity 中禁用/切换跟踪平面的可视化

    我已经研究 ARCore Unity 的代码有一段时间了 我想做一个简单的任务 即有一个切换按钮 以便用户可以在场景中放置一个对象 同时知道在跟踪平面可见时将其放置在哪里一旦用户放置了对象 他就可以选择仅在视觉上禁用跟踪的平面 使其看起来更
  • 在 C 的哪些版本中,括号内的块用于返回有效值?

    If I do int j int x 7 x 3 在 i686 apple darwin10 gcc 4 2 1 GCC 4 2 1 Apple Inc build 5646 gcc 中 它编译得很好 有问题的块 int x 7 x 3
  • 悬空指针,free()后值改变的原因?

    在下面的代码段中 之后free x 为什么y变成0 根据我的理解 所指向的堆中的内存x 并且仍然被指出y 还没有分配给别人 怎么会变成0呢 而且 我不认为这是free x 这将其更改为 0 任何意见 include