如何知道 C 函数 free 是否正常工作?

2024-02-12

我发现以下代码的结果存在一些差异:

#include <stdio.h>
#include <malloc.h>
#include <string.h>

int main(void)
{
 char* ptr;
 ptr = (char*)malloc(sizeof(char) * 12);
 strcpy(ptr, "Hello World");

 printf("%s\n", ptr);
 printf("FREEING ?\n");

 free(ptr);

 printf("%s\n", ptr);
}

让我解释:

在第三次调用 printf 时,根据操作系统,我得到不同的结果,Windows 中的垃圾字符,Linux 中没有任何内容,而在 Unix 系统中“Hello World”被打印。

有没有办法检查指针的状态以了解内存何时被释放?

我认为印刷的这种机制始终不能被信任。

Thnaks.

问候。


释放指针后使用它会导致未定义的行为。

这意味着该程序可能会打印垃圾、打印字符串以前的内容、擦除您的硬盘驱动器或让猴子从您的屁股里飞出来,但仍然符合 C 标准。

没有办法查看指针并“知道内存何时被释放”。作为程序员,您有责任跟踪。

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

如何知道 C 函数 free 是否正常工作? 的相关文章

随机推荐

  • 在 iOS 中使用 Core Audio 同时播放和录制

    我需要使用 Core Audio 同时播放和录制 我真的不想使用 AVFoundation API AVAudioPlayer AVAudioRecorder 来执行此操作 因为我正在制作音乐应用程序 并且不能有任何延迟问题 我查看了App
  • Python 多处理和共享 numpy 数组

    我有一个问题 与此类似 import numpy as np C np zeros 100 10 for i in range 10 C sub get sub matrix C i other args shape 10x10 C i 1
  • SQL ANY 和 SOME 关键字在所有 SQL 方言中都是同义词吗?

    在 Postgres 中 ANY and SOME当用在谓词表达式的右侧时是同义词 例如 这些是相同的 column ANY SELECT column SOME SELECT 此处记录了这一点 http www postgresql or
  • 在 UIWebView 中执行操作后隐藏文本选择手柄

    我有几个定制UIMenuItems通过选择来执行操作UIWebView 在该选择上运行操作后 我想隐藏选择手柄 就像copy does 我尝试过使用window getSelection removeAllRanges 那是有效的windo
  • Networkx - 从社区创建图表

    使用以下工作代码 import netowkx as nx import networkx algorithms community as nx comm G nx karate club graph Find the communitie
  • 当我的子类位于不同的包中时,为什么我的子类无法访问其超类的受保护变量?

    我有一个抽象类 relation包装内database relation和它的一个子类 Join 在包中database operations relation有一个名为的受保护成员mStructure In Join public Joi
  • 在 JBoss 中我可以配置“共享库”位置吗?

    我在开发环境中使用 JBoss 4 2 2 GA 应用程序服务器 我有一个 WAR 文件 MyWar war和一个 JAR 文件ExternalJar jar 这些文件的结构如下 应用程序 WAR 文件 MyWar war AppClass
  • 复制功能如何工作? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我不明白如何copy函数基于文档工作 copy 内置函数将元素从源切片复制到 目标切片 作为一种特殊情况 它还会从 字符串到字节切片 源和目
  • 如何在上传到服务器之前调整/压缩 Android 中的相机图像或图库图像?

    我必须上传可以从图库中选择或用相机拍摄的图像 我已经成功地做到了这一点 但问题是 有时图像大小为 1MB 所以上传到服务器需要更多时间 我需要在上传之前调整此图像的大小 这个怎么做 public void onActivityResult
  • 从 JSON 创建数组的数组

    我在 ajax 调用后收到以下内容response在 PHP 中使用json encode 2013 02 24 0 2013 02 25 0 2013 02 26 1 2013 02 27 6 2013 02 28 6 2013 03 0
  • 无法在cygwin上安装uwsgi

    我的主要操作系统是 Windows 10 但我使用 cygwin 作为终端 通过安装uwsgi时pip3 install uwsgi命令 它失败并显示错误消息 AttributeError module os has no attribut
  • 我如何全局安装 sbt 插件

    我从github下载了android sdk plugin 文档说我需要全局安装插件 将插件全局安装到 sbt plugins 或 sbt 0 13 plugins 分别适用于 0 12 和 0 13 addSbtPlugin com ha
  • 实体(空)不符合键“title”的键值编码

    我正在尝试让 RestKit 和 CoreData 一起工作 我越来越接近了 但我收到以下错误 CoreData error Failed to call designated initializer on NSManagedObject
  • 单个应用程序中的多个 RCTRootView

    我正在创建一个 React Native 应用程序 但我需要使用 Objective C 来构建我的自定义 UIView 但问题是这个 UIView 需要显示反应内容 例如反应文本输入和按钮 我正在考虑向自定义 UIView 添加 RCTR
  • 位图.保存“一般错误”

    当我运行我的应用程序时 出现以下错误 GDI 中发生一般错误 我环顾四周 发现人们也有类似的错误 但没有找到真正的解决方案 或者实施起来确实很痛苦 那些没有得到解决方案的人还没有发布他们的代码 所以我想我不妨尝试一下并提出另一个关于如何修复
  • @login_required 正在丢失当前指定的语言

    我在用i18n patterns使我的应用程序国际化并且它正在工作 除非我单击需要登录的链接 受保护的视图 login required装饰器 我被重定向到默认语言的登录表单 而不是当前活动的语言 如何保留活动 URL 换句话说 当在法语部
  • rawQuery(查询,选择参数)

    我想使用选择查询从表中检索数据 我已经发现 rawQuery query selectionArgs 的方法SQLiteDatabase类来检索数据 但我不知道如何query and selectionArgs应该传递给rawQuery m
  • 你能从 sklearn 网格搜索 (GridSearchCV) 中获得所有估计器吗?

    我最近使用测试了许多超参数组合sklearn model selection GridSearchCV 我想知道是否有一种方法可以调用在此过程中接受过培训的所有先前估算器 search GridSearchCV estimator my e
  • 分布式缓存

    我正在 opensuse linux 上使用 hadoop 19 我没有使用任何集群 而是在我的机器本身上运行我的 hadoop 代码 我遵循放入分布式缓存的标准技术 但我不是一次又一次地从分布式缓存访问文件 而是将文件的内容存储在一个数组
  • 如何知道 C 函数 free 是否正常工作?

    我发现以下代码的结果存在一些差异 include