专栏首页C语言入门到精通C语言 | 每日基础(41)

C语言 | 每日基础(41)

读者:为什么在调用 free() 之后指针没有变空?使用 (赋值, 比较) 释放之 后的指针有多么不安全?

阿一:当你调用 free() 的时候, 传入指针指向的内存被释放, 但调用函数的指针值 可能保持不变, 因为 C 的按值传参语义意味着被调函数永远不会永久改变参数的 值。严格的讲, 被释放的指针值是无效的, 对它的任何使用, 即使没有解参照, 也可 能带来问题, 尽管作为一种实现质量的表现, 多数实现都不会对无伤大雅的无效指 针使用产生例外。

读者:当我 malloc() 为一个函数的局部指针分配内存时, 我还需要用 free() 明确的释放吗?

阿一:是的,记住指针和它所指向的东西是完全不同的。局部变量在函数返回时 就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对 象。用 malloc() 分配的内存直到你明确释放它之前都会保留在那里。一般地, 对 于每一个 malloc() 都必须有个对应的 free() 调用。

本文分享自微信公众号 - C语言入门到精通(c_printf),作者:刘一

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基础知识 | 每日一练(79)

    士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ...

    闫小林
  • 基础知识 | 每日一练(59)

    士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ...

    闫小林
  • 基础知识 | 每日一练(58)

    小林:C 程序员传统上喜欢知道很多要知道的还要多关于机器实现的细节。空指针在源码和大多数机器实现中都用零来表示的事实导致了很多无根据的猜测。

    闫小林
  • Windows客户端C/C++编程规范“建议”——指针

    等级:【必须】 说明:如果类成员变量指针在释放后没有置空,将出现如下问题: a) 无法判断指针是否已经是野指针 b) Dump分析很难发现是野指针函数...

    方亮
  • 我来告诉你,99%的HR都不会做的这个图怎么做

    今天我们来聊聊上图这个比较炫酷的指针仪表图,这个图可以根据你的指标的数据进行关联,通过指标数据的变化,仪表图进行指针的变化,我们来讲讲这个图设计的思路。

    王佩军
  • leetcode链表之找出倒数第k个节点

    这里采用了快慢指针的套路,先让快指针走k步,然后两个指针同步走,当快指针走到头时,慢指针就是链表倒数第k个节点。

    codecraft
  • leetcode链表之找出倒数第k个节点

    这里采用了快慢指针的套路,先让快指针走k步,然后两个指针同步走,当快指针走到头时,慢指针就是链表倒数第k个节点。

    codecraft
  • 为什么C语言诡异离奇、缺陷重重,却获得了巨大的成功?

    已经使用了C语言十几年了,今天还在写C语言代码,C语言算是很多编程语言祖师爷了,已经取得了巨大的成功但还是很多人对于C语言存在很大的偏见,觉得C语言里面很多语法...

    程序员互动联盟
  • LeetCode精选好题(一)

    本来想把三个月的题目全部重新做一遍,筛选一遍,再一次性发。 but眼看今天就断更了,算了算了,筛选到了链表部分了。

    看、未来
  • Python-Excel-openpyxl-08-读Excel生成文件夹

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia

扫码关注云+社区

领取腾讯云代金券