69.【C语言】动态内存管理(重点)(2)

news2024/10/4 12:41:35

目录

3.free函数

cplusplus网的翻译

提炼要点

使用

x86+debug环境下, 打开内存窗口

建议


3.free函数

cplusplus的介绍 点我跳转

cplusplus网的翻译

函数

free


void free (void* ptr);

释放内存块
之前通过调用malloc来分配一块内存,calloc和recalloc是来释放内存块的,让内存块可以用于后续的分配

如果ptr指针不指向通过上述函数分配的内存块,会导致为未定义行为

如果ptr指针为空,该函数不作任何处理

注意到函数不自己改变ptr的值,因此函数仍然指向同一个位置(现在无效)

参数


ptr:指向之前被malloc,calloc或recalloc分配的内存块

返回值


无(原因为void类型)

提炼要点

1.free函数用来释放动态开辟的内存

2.参数ptr指向的空间为malloc,calloc或recalloc开辟的空间

3.如果参数ptr指向的空间不是动态开辟的,那free函数的行为是未定义的

禁止这样写:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a = 0;
    int* p = &a;
    free(p);
}

4.如果参数ptr是NULL指针,则函数不做任何处理

5.使用free函数要加#include <stdlib.h>

使用

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int* p = (int*)malloc(20);
    if (p != NULL)
    {
        *p = 1;
        printf("%d", *p);
        return 0;
    }
    else
    {
        perror("malloc");
        return 1;
    }
    free(p);
}

x86+debug环境下, 打开内存窗口

执行完int* p = (int*)malloc(20);后输入p

执行完*p = 1; 再次查看

执行完free(p);再次查看

指针p的值没有变化,而且free函数不对之前分配的内存空间赋新值,只是交换给操作系统,因此没有变化

建议

1.虽然free函数没有改变指针的值,但建议手动为p赋NULL,否则为野指针(对之前开辟的内存空间没有使用权限)

2.有分配内存空间(,malloc,calloc,recalloc)就有释放内存空间(free)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sublime快捷键的使用和修改

sublime快捷键 Ctrl Shift D 复制光标所在整行&#xff0c;插入到下一行Ctrl Shift K 删除整行 如果快捷键冲突了&#xff0c;就需要修改 sublime快捷键修改 示例&#xff1a;当前 Ctrl Shift D 冲突了 1.选择 首选项 -> 按键绑定-默认 2.按住 Ctrl F&#xff0…

初级前端面试常见问题(上岸某公司)

一、HTML5CSS篇 1.css隐藏元素方法 display:none position:absolute 移除到可视区域之外 visibility:hidden z-index:负值&#xff0c;用其他元素遮盖 opacity:0 clip/clip-…

心觉:做真正对自己成长有价值的事情

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作189/1000天 不知不觉已经持续写了189天&#xff0c;每日一篇从不间断 这段时间最大的收获&#xff0c;就是看透了很多事物 自我觉…

Typora解决图片复制到其他博客平台,解决图片显示转存失败(CSDN除外)

目录 一、Typora这个Markdown编辑器的确好用1.1 安装 二、 问题“图片转存失败”2.1 问题具体显示如下&#xff1a;2.2 问题分析&#xff1a;其实就是图片在typora里面是使用的本地路径&#xff0c;因此不显示&#xff0c; 三、解决方案3.1打开Typora&#xff0c;按下述图片显示…

51c视觉~CV~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638046 一、 搭建半自动标注工具 本文主要介绍的半自动标注工具为pyOpenAnnotate&#xff0c;此工具是基于Python和OpenCV实现&#xff0c;最新版本为0.4.0&#xff0c;可通过下面指令安装使用&#xff1a; pip install p…

【开源免费】基于SpringBoot+Vue.JS洗衣店订单管理系统(JAVA毕业设计)

本文项目编号 T 068 &#xff0c;文末自助获取源码 \color{red}{T068&#xff0c;文末自助获取源码} T068&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 顾…

智慧水务可视化:高效管理水资源

利用图扑先进的可视化技术&#xff0c;实现对水资源的实时监控与高效管理&#xff0c;提高水务工作的透明度和决策效率&#xff0c;促进水资源的可持续利用。

通信工程学习:什么是ARP地址解析协议

ARP&#xff1a;地址解析协议 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是一种在计算机网络中用于将IP地址映射为MAC地址的协议。它是TCP/IP协议栈中的一个重要组成部分&#xff0c;特别是在IPv4网络中&#xff0c;扮演着至关重要的角色…

二叉树深度学习——二叉树的最近公共祖先

1.题目解析 题目来源&#xff1a;236.二叉树的最近公共祖先 测试用例 2.算法原理 基本解法O(N^2) 这里我们可以将寻找的两节点分为在同一子树与不在同一子树的两种情况分析 1.在同一子树&#xff1a;由于自己可以是自己的祖先&#xff0c;所以寻找层数较高的节点就是二者的公共…

AFSim仿真系统 --- 系统简解_03( Warlock模块 - 人工干预 在仿真领域中指的是AFSIM的操作员互动可视化应用程序)

我们就用保留单词 Warlock Warlock&#xff08;在仿真领域中指的是AFSIM的操作员互动可视化应用程序--人工干预 &#xff09; Warlock是AFSIM的操作员环环相扣&#xff08;Operator-in-the-Loop&#xff09;视觉应用程序。它提供了一个图形环境&#xff0c;用于在运行时查看和…

【知识分享】如何计算开关电路中的RC-Snubber参数

在实际的开关电路中&#xff0c;会存在很多的寄生参数&#xff0c;当高边开关被打开或关闭时&#xff0c;在寄生电感器中积累的能量会在输入回路中引起共振&#xff0c;并且&#xff0c;寄生元件的非常小的值就可以使共振频率超过几百MHz&#xff0c;导致EMI的恶化&#xff0c;…

TCP BIC 的拟合函数分析

前面说了这么多&#xff0c;还没有对 bic 的数学性质进行分析&#xff0c;本文补上。 tcp reno 完全依赖 ack 时钟以 rtt 为单位线性增窗&#xff0c;增窗速度与 rtt 负相关&#xff0c;如何在 rtt 比较大时增加增窗速度&#xff0c;这就是 bic&#xff0c;以二分替换遍历。 …

VirtulBOX Ubuntu22安装dpdk23.11

目录 依赖包安装 Python安装 numa安装 ​编辑Python pip3安装 ​编辑pyelftools安装 meson和ninja安装 ​编辑构建与编译 Meson构建DPDK ​编辑Ninja安装DPDK ​编辑VFIO-PCI驱动安装 大页内存和IOMMU配置 ​编辑VFIO-PCI加载 ​编辑VFIO-PCI驱动绑定 ​编辑dpdk…

数字乡村智慧乡镇整体规划设计解决方案

1. 数字乡村的重要性 数字乡镇作为乡村振兴战略的一部分&#xff0c;通过信息化手段提高农业农村现代化水平&#xff0c;是建设数字中国的重要内容&#xff0c;对保障扶贫成果、促进乡村治理体系和治理能力现代化具有基础支撑作用。 2. 乡镇政府和农户面临的问题 乡镇政府和…

Python内存管理与泄漏排查实战

Python内存管理与泄漏排查实战 Python作为一种高级编程语言&#xff0c;因其易读性和丰富的标准库而备受开发者青睐。然而&#xff0c;随着项目的复杂度增加&#xff0c;内存管理问题可能会影响程序的性能&#xff0c;甚至导致内存泄漏。为了构建健壮且高效的应用程序&#xf…

python爬虫 - 初识爬虫

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、爬虫的关键概念 &#xff08;一&#xff09;HTTP请求与响应 &#xff0…

软件工程-数据流图

数据流图(Data Flow Diagram&#xff0c;DFD)是一种图形化技术&#xff0c;它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 数据流图的设计原则 数据守恒原则&#xff0c;对于任何一个加工来说&#xff0c;其所有输出数据流中的数据必须能从该加工的输入数据流中…

移动应用的界面配置-手机银行APP

设置登录界面为线性布局&#xff0c;组件垂直居中排列设置主页为滚动模式&#xff0c;包括布局、添加背景图片设置按钮样式&#xff0c;包括形状、边框线的宽度和颜色 设置登录界面 设置界面为线性布局&#xff0c;组件垂直居中排列 --android:gravity"center_vertical…

前缀调整——优化连续提示以生成文本

人工智能咨询培训老师叶梓 转载标明出处 大模型微调需要更新并存储模型的所有参数&#xff0c;这不仅增加了存储成本&#xff0c;也使得模型的部署变得复杂。为了解决这一问题&#xff0c;斯坦福大学的Xiang Lisa Li和Percy Liang提出了一种名为“前缀调整”&#xff08;Prefi…