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

动态内存四个函数

文章目录

      • 1. `malloc`
      • 2. `calloc`
      • 3. `realloc`
      • 4. `free`

在C语言中,malloccallocreallocfree 是用于动态内存管理的标准库函数,它们定义在 <stdlib.h> 头文件中。以下是这些函数的用法:

1. malloc

malloc 函数用于在堆区分配指定大小的内存块。

  • 原型
    void* malloc(size_t size);
    
  • 参数
    • size:需要分配的内存字节数。
  • 返回值
    • 成功时,返回指向分配内存的指针。
    • 失败时,返回 NULL
  • 用法
    int* ptr = (int*)malloc(10 * sizeof(int)); // 分配10个整数的空间
    if (ptr == NULL) {// 分配失败,处理错误
    }
    

2. calloc

calloc 函数用于在堆区分配指定数量的内存块,并将每个内存块初始化为0。

  • 原型
    void* calloc(size_t num, size_t size);
    
  • 参数
    • num:需要分配的内存块数量。
    • size:每个内存块的大小。
  • 返回值
    • 成功时,返回指向分配内存的指针。
    • 失败时,返回 NULL
  • 用法
    int* ptr = (int*)calloc(10, sizeof(int)); // 分配10个整数并初始化为0
    if (ptr == NULL) {// 分配失败,处理错误
    }
    

3. realloc

realloc 函数用于调整之前由 malloccallocrealloc 分配的内存块的大小。

  • 原型
    void* realloc(void* ptr, size_t size);
    
  • 参数
    • ptr:指向之前分配的内存块的指针。
    • size:新的内存块大小。
  • 返回值
    • 成功时,返回指向新分配内存的指针。
    • 失败时,返回 NULL。原内存块不会被释放,需要手动释放。
  • 用法
    int* ptr = (int*)malloc(10 * sizeof(int));
    // ... 使用 ptr ...
    ptr = (int*)realloc(ptr, 20 * sizeof(int)); // 增加ptr指向的内存块大小到20个整数
    if (ptr == NULL) {// 重新分配失败,处理错误
    }
    

4. free

free 函数用于释放之前由 malloccallocrealloc 分配的内存块。

  • 原型
    void free(void* ptr);
    
  • 参数
    • ptr:指向需要释放的内存块的指针。
  • 返回值
    • 无返回值。
  • 用法
    int* ptr = (int*)malloc(10 * sizeof(int));
    // ... 使用 ptr ...
    free(ptr); // 释放ptr指向的内存块
    ptr = NULL; // 避免野指针
    

在使用这些函数时,需要注意以下几点:

  • 使用 malloccallocrealloc 分配内存后,应该检查返回的指针是否为 NULL,以处理内存分配失败的情况。
  • 释放内存后,应该将指针设置为 NULL,以避免产生野指针。
  • 调用 realloc 时,如果新的大小小于原大小,原内存块的内容可能会丢失。如果新的大小大于原大小,新分配的内存部分不会被初始化。

相关文章:

动态内存四个函数

文章目录 1. malloc2. calloc3. realloc4. free 在C语言中&#xff0c;malloc、calloc、realloc 和 free 是用于动态内存管理的标准库函数&#xff0c;它们定义在 <stdlib.h> 头文件中。以下是这些函数的用法&#xff1a; 1. malloc malloc 函数用于在堆区分配指定大小…...

DevExpress WPF中文教程 - 为项目添加GridControl并将其绑定到数据

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...

高性能分布式IO系统BL205 OPC UA耦合器

边缘计算是指在网络的边缘位置进行数据处理和分析&#xff0c;而不是将所有数据都传送到云端或中心服务器&#xff0c;这样可以减少延迟、降低带宽需求、提高响应速度并增强数据安全性。 钡铼BL205耦合器就内置边缘计算功能&#xff0c;它不依赖上位机和云平台&#xff0c;就能…...

live555 rtsp服务器实战之doGetNextFrame

live555关于RTSP协议交互流程 live555的核心数据结构值之闭环双向链表 live555 rtsp服务器实战之createNewStreamSource live555 rtsp服务器实战之doGetNextFrame live555搭建实时播放rtsp服务器 注意&#xff1a;该篇文章可能有些绕&#xff0c;最好跟着文章追踪下源码&…...

Nginx系列-3 servername优先级和location优先级和常用正则表达式

1.正则表达式和分组 由于Nginx配置文件中经常出现正则表达式&#xff0c;因此本章节专门对常见的正则表达式进行简单介绍。 [1] 开始与结束 ^表示匹配输入字符串的开始 $表示匹配输入字符串的结束[2] 匹配次数 ?表示匹配0次或者1次 表示匹配1次或多次 *表示匹配0从或多次…...

python—爬虫爬取电影页面实例

下面是一个简单的爬虫实例&#xff0c;使用Python的requests库来发送HTTP请求&#xff0c;并使用lxml库来解析HTML页面内容。这个爬虫的目标是抓取一个电影网站&#xff0c;并提取每部电影的主义部分。 首先&#xff0c;确保你已经安装了requests和lxml库。如果没有安装&#x…...

实现图片拖拽和缩小放大功能。

1. 前言 不知道各位前端小伙伴蓝湖使用的多不多&#xff0c;反正我是经常在用&#xff0c;ui将原型图设计好后上传至蓝湖&#xff0c;前端开发人员就可以开始静态页面的的编写了。对于页面细节看的不是很清楚可以使用滚轮缩放后再拖拽查看&#xff0c;还是很方便的。于是就花了…...

昇思25天学习打卡营第18天|munger85

DCGAN生成漫画头像 首先肯定是下载训练数据&#xff0c;而这些训练数据就是一些卡通头像。后来我们会看到这个具体的头像 就像其他的数据集目录一样&#xff0c;它是由一些目录和这个目录下面的文件组成的数据集。 有相当多的图片。所以可以训练出来比较好的效果。 图片的处理…...

nginx配置文件说明

Nginx的配置文件说明 Nginx配置文件的主要配置块可以分为三个部分&#xff1a;全局配置块&#xff08;events和http块&#xff09;&#xff0c;events块和http块。这三个部分共同定义了Nginx服务器的整体行为和处理HTTP请求的方式。 全局配置块&#xff1a; 包含了影响Nginx服…...

用不同的url头利用Python访问一个网站,把返回的东西保存为txt文件

这个需要调用requests模块&#xff08;相当于c的头文件&#xff09; import requests 还需要一个User-Agent头&#xff08;这个意思就是告诉python用的什么系统和浏览器&#xff09; Google Chrome&#xff08;Windows&#xff09;: Mozilla/5.0 (Windows NT 10.0; Win64; x64…...

一文掌握Prometheus实现页面登录认证并集成grafana

一、接入方式 以保护Web站点的访问控制&#xff0c;如HTTP 服务器配置中实现安全的加密通信和身份验证&#xff0c;保护 Web 应用程序和用户数据的安全性。 1.1 加密密码 通过httpd-tools工具包来进行Web站点加密 yum install -y httpd-tools方式一&#xff1a;通过htpasswd生…...

欢迎来到 Mint Expedition:Web3 和 NFT 的新时代开始

7 月 15 日&#xff0c;Mint Expedition 正式开启&#xff0c;作为 Mint 生态系统的旗舰项目&#xff0c;将彻底变革 Web3 和 NFT 去中心化应用&#xff01; Mint Expedition 是 Mint 的最新航程&#xff0c;延续了 Mint Forest 的成功。Mint Forest 吸引了超过 41.4 万独立用…...

针对环境构图的全局一致性扫描点云数据对齐(Graph SLAM)

本算法是一个经典的&#xff0c;针对SLAM&#xff08;simultaneous localization and mapping 即时定位与地图构建&#xff09;问题而提出的算法。该算法的提出者是Feng Lu和Evangelos Milios&#xff0c;他们在本算法中开创了通过全局优化方程组以减少约束引入的误差来进一步优…...

Matlab学习笔记01 - 基本数据类型

Matlab学习笔记01 - 基本数据类型 1、数据类型转换2、矩阵2.1 访问单个矩阵元素2.2 访问多个矩阵元素2.3 矩阵转置 3、字符与字符串4、数值与字符串5、元胞数组 1、数据类型转换 十进制转十六进制字符串‘FF’ >> hex2dec(3ff)ans 1023十进制转十六进制字符串 >>…...

基于重要抽样的主动学习不平衡分类方法ALIS

这篇论文讨论了数据分布不平衡对分类器性能造成的影响,并提出了一种新的有效解决方案 - 主动学习框架ALIS。 1、数据分布不平衡会影响分类器的学习性能。现有的方法主要集中在过采样少数类或欠采样多数类,但往往只采用单一的采样技术,无法有效解决严重的类别不平衡问题。 2、论…...

Python爬虫(基本流程)

1. 确定目标和范围 明确需求&#xff1a;确定你需要从哪些网站抓取哪些数据。合法性&#xff1a;检查目标网站的robots.txt文件&#xff0c;了解哪些内容可以被抓取。数据范围&#xff1a;确定爬取数据的起始和结束点&#xff0c;比如时间范围、页面数量等。 2. 选择合适的工…...

primeflex教学笔记20240720, FastAPI+Vue3+PrimeVue前后端分离开发

练习 先实现基本的页面结构&#xff1a; 代码如下&#xff1a; <template><div class"flex p-3 bg-gray-100 gap-3"><div class"w-20rem h-12rem bg-indigo-200 flex justify-content-center align-items-center text-white text-5xl">…...

移动设备安全革命:应对威胁与解决方案

移动设备已成为我们日常工作和家庭生活中不可或缺的工具&#xff0c;然而&#xff0c;对于它们安全性的关注和投资仍然远远不够。本文深入分析了移动设备安全的发展轨迹、目前面临的威胁态势&#xff0c;以及业界对于这些安全漏洞响应迟缓的深层原因。文中还探讨了人们在心理层…...

【C语言】 链表实现学生管理系统(堆区开辟空间)

总体思路都能写出来&#xff0c;问题是感觉稍微比之前的麻烦一些&#xff0c;在刚开始创建结构体的时候&#xff0c;并没有去按照链表的思路去写&#xff0c;导致写成了顺序表&#xff0c;后面就一直纠结空间怎么开辟。 链表是由一个头节点和其它申请出来的小节点连起来的&…...

STM32实战篇:按键(外部输入信号)触发中断

功能要求 将两个按键分别与引脚PA0、PA1相连接&#xff0c;通过按键按下&#xff0c;能够触发中断响应程序&#xff08;不需明确功能&#xff09;。 代码流程如下&#xff1a; 实现代码 #include "stm32f10x.h" // Device headerint main() {//开…...

大麦抢票自动化终极指南:5分钟快速上手教程

大麦抢票自动化终极指南&#xff1a;5分钟快速上手教程 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 您是否曾因热门演唱会门票秒光而遗憾&#x…...

Ubuntu 20.04 下通过 PPA 快速部署 qBittorrent 及配置指南

1. 为什么选择qBittorrent&#xff1f; 如果你经常需要下载大型文件&#xff0c;比如开源系统镜像、影视素材或者游戏资源&#xff0c;那么一个靠谱的BT客户端绝对是刚需。我在Ubuntu上试过各种BT工具&#xff0c;最终发现qBittorrent是最稳定高效的选择。它完全开源免费&#…...

UNet架构优势解析:cv_unet_image-colorization语义特征与纹理保留实测

UNet架构优势解析&#xff1a;cv_unet_image-colorization语义特征与纹理保留实测 1. 引言&#xff1a;为什么UNet是图像上色的理想选择&#xff1f; 你有没有翻过家里的老相册&#xff1f;那些泛黄的黑白照片&#xff0c;承载着珍贵的记忆&#xff0c;却总让人觉得少了点什么…...

提升90%效率:OpenCore EFI自动化配置工具OpCore-Simplify实战指南

提升90%效率&#xff1a;OpenCore EFI自动化配置工具OpCore-Simplify实战指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 副标题&#xff1a;面向…...

Pi0 Web演示服务监控:Prometheus+Grafana指标采集与告警配置

Pi0 Web演示服务监控&#xff1a;PrometheusGrafana指标采集与告警配置 1. 项目概述与监控需求 Pi0作为一个先进的视觉-语言-动作流机器人控制模型&#xff0c;其Web演示服务的稳定运行对于用户体验和开发测试至关重要。在生产环境中&#xff0c;我们需要实时掌握服务的运行状…...

Onnxruntime模型量化实战:从PTQ到精度调优

1. Onnxruntime模型量化入门指南 第一次接触模型量化时&#xff0c;我也被各种术语搞得晕头转向。简单来说&#xff0c;量化就是把模型参数从32位浮点数转换为8位整数&#xff0c;就像把高清图片压缩成更小的文件。Onnxruntime作为业界领先的推理引擎&#xff0c;提供了完整的量…...

从“玩概念”到“真落地”:AI智能体三大场景的突围之路

当行业不再为“大模型参数”狂欢&#xff0c;真正的价值开始浮现——客服自动化、内部知识库、办公Agent&#xff0c;正在成为AI智能体最先跑通商业闭环的三大场景。而决定成败的关键&#xff0c;已经从模型能力转向上下文设计、工具调用与反馈迭代。 2026年&#xff0c;大模型…...

如何通过League-Toolkit智能工具提升英雄联盟操作效率

如何通过League-Toolkit智能工具提升英雄联盟操作效率 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾因错过对局确认而被…...

5个步骤掌握UE4SS:虚幻引擎游戏定制与脚本开发完全指南

5个步骤掌握UE4SS&#xff1a;虚幻引擎游戏定制与脚本开发完全指南 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …...

Scarab:重新定义空洞骑士模组管理体验

Scarab&#xff1a;重新定义空洞骑士模组管理体验 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 在独立游戏模组管理领域&#xff0c;手动复制文件、解决版本冲突和跟踪更新的…...