当前位置: 首页 > news >正文

【C语言】库函数常见的陷阱与缺陷(3):内存分配函数

目录

一、malloc 函数

1.1. 功能与常见用法

1.2. 陷阱与缺陷

1.3. 安全使用建议

1.4. 安全替代和代码示例

二、calloc 函数

2.1. 功能与常见用法

2.2. 陷阱与缺陷

2.3. 安全使用建议

2.4. 安全替代和代码示例

三、realloc 函数

3.1. 功能与常见用法

3.2. 陷阱与缺陷

3.2.1. 数据丢失风险

3.2.2. 分配失败隐患

3.2.3. 内存泄漏风险

3.3. 安全使用建议

3.4. 示例代码

四、free函数

4.1. 功能与用法

4.2. 陷阱与缺陷

4.3. 安全替代与最佳实践

4.4. 代码示例


在C语言编程中,内存分配函数(如malloccallocreallocfree)是管理动态内存的关键工具。然而,这些函数在使用时也存在一些常见的陷阱与缺陷,如果不加以注意,可能会导致内存泄漏、野指针、双重释放等严重问题。

一、malloc 函数

1.1. 功能与常见用法

malloc 函数用于在堆(heap)上动态分配指定大小的内存块。它接受一个参数,即所需内存块的大小(以字节为单位),并返回一个指向该内存块起始地址的指针。如果内存分配失败(例如,由于系统内存不足),malloc将返回NULL

相关文章:

【C语言】库函数常见的陷阱与缺陷(3):内存分配函数

目录 一、malloc 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全使用建议 1.4. 安全替代和代码示例 二、calloc 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 安全替代和代码示例 三、realloc 函数 3.1. 功能与常见用法 3.2. 陷阱与缺…...

Vue前端实现预览并打印PDF文档

一. 需求 1. 点击文档列表中的【打印】按钮,获取后台生成的PDF的url,弹窗进行预览: 2. 点击【打印】按钮,进行打印预览和打印: 二. 需求实现 首先后台给的是word文档,研究了一圈后发现暂时无法实现&…...

CSS学习记录07

CSS轮廓 轮廓是在元素周围绘制的一条线,在边框之外,以凸显元素。 CSS拥有如下轮廓属性: outline-styleoutline-coloroutline-widthoutline-offsetoutline 注意:轮廓与边框不同。不同之处在于:轮廓是在元素边框之外…...

喆塔科技携手国家级创新中心,共建高性能集成电路数智化未来

集创新之力成数智之塔 近日,喆塔科技与国家集成电路创新中心携手共建“高性能集成电路数智化联合工程中心”并举行签约揭牌仪式。出席此次活动的领导嘉宾包含:上海市经济和信息化委员会、上海市集成电路行业协会、复旦大学微电子学院、国家集成电路创新中…...

基于单片机的汽车雨刷器装置

摘要 下雨天时道路十分模糊,能见度非常低,司机分散注意力去手动打开雨刷器开关会非常危险。据统计,全世界雨天行车的车祸事故有7%是因为司机手动打开雨刷分心导致的。为了减小司机因为手动打开雨刷发生车祸的概率,所以…...

013-SpringBoot 定义优雅的全局异常处理方式

SpringBoot 定义优雅的全局异常处理方式 一、概述二、定义全局异常接口三、定义全局异常枚举四、定义全局基础异常五、定义全局基础业务异常六、定义全局返回七、定义全局返回工厂八、全局异常处理九、实体类十、Controller十一、效果展示一、概述 在日常项目开发中,异常是常…...

nginx 网页正常访问 F5 404

前端打包部署完,无论pc-web或h5-wap,访问正常,一刷新就会404。 解决方案: 在项目的nginx子配置文件中,加上以下代码 try_files $uri $uri/ /index.html;...

Idea Spring Initializr没有 Java 8选项解决办法

问题描述 在使用IDEA中的Spring Initializr创建新项目时,Java 版本近可选择Java17,21 。不能选择Java8;SpringBoot 版本也只有 3.x 问题原因 Spring 官方( https://start.spring.io/)不再提供旧版本的初始化配置 解决方案 方案 1 使用阿里…...

【Leetcode Top 100】104. 二叉树的最大深度

问题背景 给定一个二叉树 r o o t root root,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 数据约束 树中节点的数量在 [ 0 , 1 0 4 ] [0, 10 ^ 4] [0,104] 区间内。 − 100 ≤ N o d e . v a l ≤ 100 -100 \le Nod…...

C#实现一个HttpClient集成通义千问-开发前准备

集成一个在线大模型(如通义千问),来开发一个chat对话类型的ai应用,我需要先了解OpenAI的API文档,请求和返回的参数都是以相关接口文档的标准进行的 相关文档 OpenAI API文档 https://platform.openai.com/docs/api-…...

使用ssh免密登录实现自动化部署rsync+nfs+lsync(脚本)

单机一键部署sshrsyncnfslsync 执行准备 主机信息 主机角色外网IP内网IP主机名nfs、lsync10.0.0.31176.16.1.31nfs客户端10.0.0.7176.16.1.7web01rsync、nfs10.0.0.41172.16.1.41backup 秘钥信息 #web01可以免密连接nfs和backup [rootweb01 ~]# ssh-keygen [rootweb01 ~]#…...

若依集成更好用的easyexcel

背景 若依使用的是apach poi并在此基础上进行封装apach poi的原生的api是很复杂的,若依简化了了此操作apach poi的上传速率和下载速率都是没有优化的,依赖于文件大小的限制在此前提下,如果没法满足客户的需求(超大型文件的上传&am…...

去除背景 学习笔记

目录 rembg rembg 安装: pip install rembg import os from glob import glob from rembg import remove from argparse import ArgumentParser from PIL import Image if __name__ __main__:parser ArgumentParser()parser.add_argument(--path, typestr, re…...

我们来学mysql -- 隔离级别简介(原理篇)

隔离级别 别记题记隔离级别后记系列文章 别记 烧香拜佛要是有用,还需要我们来过吗…从个人情感角度,巴沙尔阿萨德 辜负了东大对他的期望他可是从正门踏进了灵隐寺 俄乌战争即将进入第三年(此时202412)此时的加沙正成为以色列建国…...

机器学习(4)Kmeans算法

1、简述聚类分析的重要性及其在机器学习中的应用   聚类分析,作为机器学习领域中的一种无监督学习方法,在数据探索与知识发现过程中扮演着举足轻重的角色。它能够在没有先验知识或标签信息的情况下,通过挖掘数据中的内在结构和规律&#xf…...

Oracle之表空间迁移

问题背景:一个数据表随着时间的累积,导致所在表空间占用很高,里面历史数据可以清除,保留近2个月数据即可 首先通过delete删除了2个月以前的数据。 按网上的教程进行空间压缩,以下sql在表所在用户执行: -- 允许表重新…...

域渗透入门靶机之HTB-Cicada

easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53,88,389等端口,推测为域控 进一步信息收集,对爆破的端口进行更加详细的扫描 小tips:对于众多的端口&…...

ue5 motion matching

ue5.5 gameanimationsample 先看动画蓝图 核心两个node 第一个是根据数据选择当前的pose 第二个是缓存一段历史记录,为第一个node选择的时候提供数据。 在animinstance的update方法中 每帧都更新这个函数,每帧更新trajectory的数据 看看第一个node的…...

【从零开始的LeetCode-算法】383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#…...

记录模板学习(持续更新)

目的: 学习C模板的编写,使用模板类包装一个可调用对象 可调用对象包括:普通函数, lambda表达式, 类成员函数 可以参考到QtConcurrent::run的实现,可以看到这个函数有非常多重载,其中可以接受类…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...