80.动态申请内存

news2024/12/26 23:20:52

目录

一.malloc函数

二.其他注意事项

三.视频教程


在定义变量的时候会在内存中申请空间。除了在定义变量的时候申请内存空间,也可以使用库函数动态申请内存,

一.malloc函数

作用:动态申请一块连续的任意尺寸的内存空间。

函数原型:void *malloc(size_t size);

头文件:#include <stdlib.h>

为什么返回值void *,可以他可以被转换成任意类型的指针。

函数返回值:成功返回指向申请完的内存空间的指针,失败返回NULL。

举例:


#include <stdio.h>
#include <stdlib.h>


int main(void)
{
    int *p;

    p = (int *)malloc(sizeof(int));
    if(p == NULL){
        printf("malloc error\n");
        return -1;
    }
    printf("Please enter an int type of data\n");
    scanf("%d",p);
    printf("data is %d\n",*p);
    free(p);

    return 0;

}

运行结果:

需要注意的是,malloc函数必须和free函数成对出现。

函数原型:

void free(void *ptr);

作用:释放ptr指向的内存空间。这个空间必须由malloc,calloc,realloc函数申请。realloc和calloc也是动态申请内存的函数,这里不做介绍。

也就是说必须使用free函数释放内存,否则会发生内存泄漏。

发生内存泄漏的例子:

#include <stdio.h>
#include <stdlib.h>


int main(void)
{
    int *p;

    while (1)
    {
        p = (int *)malloc(sizeof(int));
        if(p == NULL){
            printf("malloc error\n");
            return -1;
        }
    }
    
    return 0;

}

如果运行,等内存全部使用完毕,系统会自动kill掉该程序。甚至在运行过程中,一些性能不好的电脑会卡住。运行结果:

二.其他注意事项

1.也可以这样使用申请任意大小的空间:(指针类型*)malloc(sizeof(指针类型)*数据数量)

三.视频教程

79.动态申请内存_哔哩哔哩_bilibili

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

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

相关文章

【前端9】手风琴v1.0版本:使用插槽实现动态内容插入的Vue组件

【前端9】手风琴&#xff1a;使用插槽实现动态内容插入的Vue组件 写在最前面一、插槽的基本概念1.默认插槽2.具名插槽 二、实现一个折叠面板组件0.关键点和注意事项1.父组件 App.vue2.子组件 Collapse.vue总结 3.详细解读&#xff08;可以略过&#xff09;父组件子组件 三、小结…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇三

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Python任务编排和工作流管理库之prefect使用详解

概要 在数据工程和科学的世界中,任务编排和工作流管理变得越来越重要。随着数据处理任务的复杂性增加,开发人员需要一种可靠且易于使用的工具来设计、监控和管理这些任务。Prefect 是一个用于构建、监控和管理数据管道的 Python 库,它简化了工作流的创建和执行,同时提供了…

028、架构_高可用_主从原理

MySQL半同步复制概览 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。主从复制的基本过程如下图所示: 主从复制的完成通过以下三个进程实现的主库 binary log dump 线程:当从库连接主库时,…

22. K8S及DevOps

22. K8S及DevOps 一. 章节简介二. DevOps1. 简介2. CICD三. Kubernetes1. [官网](https://kubernetes.io/zh-cn/)--------------------------------------------------------------------------------------------------------一. 章节简介 二. DevOps 1. 简介 2. CICD

【科研新手必备】如何高效、高质量、科学的科研?

文献下载网站—英文写作小工具—SCI选刊 1、文献下载网站 中国知网 sci-hub 大木虫学术导航 学术资源搜索 2、英文写作小工具 DeepL 学术短语库 SCI写作辅导材料 赛特新思 3、SCI选刊 Journal Finder SPRINGER NATURE

除了黑神话,探索3A游戏大作:不可错过的经典与录屏软件推荐

在游戏的天地里&#xff0c;3A 大作凭借其美轮美奂的画面、丰富多彩的内容以及意蕴深邃的剧情&#xff0c;俘获了无数玩家的倾心。除了广受瞩目的《黑神话&#xff1a;悟空》&#xff0c;还有诸多其他的 3A 游戏大作值得您去尝试。此类游戏不但在视觉与技术方面臻至行业的巅峰水…

Linux中如何查看一个进程?如何杀死一个进程?如何查看某个端口有没有被占用?

在Linux中 如何查看一个进程&#xff1f; 使用 ps 命令 ps aux这会显示所有正在运行的进程&#xff0c;可以使用 grep 来过滤特定的进程 ps aux | grep process_name使用 top 命令 top这个命令会实时的显示系统重正在运行的进程 如何杀死一个进程&#xff1f; 使用 kill …

C++ | 泛型编程:模板初阶与函数模板深度解析

文章目录 C 泛型编程&#xff1a;模板初阶与函数模板深度解析1. 泛型编程&#xff1a;实现代码的通用性2. 函数模板&#xff1a;代码的模具2.1 什么是函数模板&#xff1f;2.2 函数模板的格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板&#xff…

【maven】阿里云和apache仓库配置

阿里云公共仓库的配置看起来有多种类型的仓库: 配置指南 我的maven是idea 自带的:D:\Program Files\JetBrains\IntelliJ IDEA 2022.3.1\plugins\maven\lib\maven3\</

校园跑腿系统小程序开发需求分析

校园跑腿系统小程序的开发需求分析是一个综合性的过程&#xff0c;旨在确保系统能够满足校园内用户的实际需求&#xff0c;并具备良好的用户体验。以下是对校园跑腿系统小程序开发需求分析的详细阐述&#xff1a; 一、功能需求分析 注册与登录&#xff1a;支持多种注册方式&am…

WebSphereMQ中间件监控指标解读

监控易是一款功能全面的IT监控系统&#xff0c;能够实时监控各种IT设施的性能和状态&#xff0c;帮助企业及时发现并解决潜在问题。在本次解读中&#xff0c;我们将聚焦于WebSphereMQ&#xff08;现更名为IBM MQ&#xff09;中间件的监控指标&#xff0c;深入剖析其含义和作用。…

[Linux] 权限

标题&#xff1a;[Linux] 权限 水墨不写bug 目录 一、Linux下对用户的分类 二、Linux的文件访问者的分类 三、修改文件的属性 1.修改文件的权限 &#xff08;只有拥有者和root可以修改某一个文件的权限&#xff09; 2.修改文件的拥有者 3.修改文件的所属组 四、文件创建…

Pytorch中不同的Norm归一化详细讲解

在做项目或者看论文时&#xff0c;总是能看到Norm这个关键的Layer&#xff0c;但是不同的Norm Layer具有不同的作用&#xff0c;准备好接招了吗&#xff1f;&#xff08;本文结论全部根据pytorch官方文档得出&#xff0c;请放心食用&#xff09; 一. LayerNorm LayerNorm的公…

统计学第5天

要观察性别和在线上买不买生鲜食品有没有关系&#xff0c;在现实生活中&#xff0c;女性通常去菜市场买菜的比较多&#xff0c;那么在线下是不是也是这样呢&#xff1f; 卡方统计量 如果研究的是两个类别变量&#xff0c;每个变量有多个类别&#xff0c;通常将两个变量多个类别…

ant design vue+vue3+ts+xlsx实现表格导出问excel文件(带自定义表头)~

1、首先默认你已安装ant design vue、xlsx 库、及file-saver。 2、导入&#xff1a; import * as XLSX from xlsx; import { saveAs } from file-saver; 注&#xff1a;这里的xlsx导入不能这么写&#xff0c;否则会报错&#xff0c;原因是版本不一致&#xff0c;语法向上兼容…

【多线程】线程间通信 之虚假唤醒和中断

两个线程&#xff0c;可以操作初始值为0的一个变量&#xff0c;实现一个线程对该变量1&#xff0c;一个线程对该变量-1&#xff0c;实现交替&#xff0c;来10轮&#xff0c;变量初始值为0&#xff0c;以实现此问题作为引入&#xff0c;简化我们的理解 文章目录 一、两个线程syn…

EasyExcel实现复杂Excel的导入

最近项目中遇到一个复杂的Excel的导入&#xff0c;并且数据量较大。因为数据不规则&#xff0c;所以只能使用POI进行自定义读取&#xff0c;但是发现数据量大之后&#xff0c;读取数据非常耗时。后面换成EasyExcel&#xff0c;性能起飞。 1. Excel样板 如上图&#xff0c;需要…

leetcode 12. 整数转罗马数字

解题思路 1.首先&#xff0c;将值与对应字符用字典来表示&#xff0c;然后将符号对应的值按有序顺序存储至列表中sums 2.将要转换的整数转换成列表形式&#xff0c;遍历列表&#xff0c;每次遍历&#xff1a; 将值取出来算出对应所在位置的实际值 如 32 对应列表 [3,2] 则 3实…

【二叉搜索树】K型与KV型二叉搜索树简单实现

关于我&#xff1a; 睡觉待开机&#xff1a;个人主页 个人专栏: 《优选算法》《C语言》《CPP》 生活的理想&#xff0c;就是为了理想的生活! 作者留言 PDF版免费提供&#xff1a;倘若有需要&#xff0c;想拿我写的博客进行学习和交流&#xff0c;可以私信我将免费提供PDF版。…