动态内存管理 柔性数组

文章目录

  • 动态内存函数 malloc free
  • calloc
  • realloc 重新开辟空间
    • realloc 也可以第一个参数为NULL,则是直接开辟内存,类似于malloc用法
  • 常见的动态内存错误
    • 对空指针进行解引用操作
    • 对开辟的内存越界访问
    • 对非动态开辟的内存使用free释放
    • 使用free释放动态开辟内存的一部分
    • 对同一块动态内存多次释放
    • 如何避免对同一块内存释放两次
    • 动态开辟的内存忘记释放,内存泄漏
  • 几个 经典笔试题
    • 题目1
    • 题目2
    • 题目3
    • 题目4
  • C++/C程序内存开辟
  • 柔性数组
    • 包含柔性数组成员 的结构体大小计算
    • 柔性数组的使用
  • 动态通讯录

在这里插入图片描述
最好先看
https://blog.csdn.net/qq_37891604/article/details/132820013

动态内存函数 malloc free

在这里插入图片描述
在这里插入图片描述

malloc
在这里插入图片描述
size要开辟的字节数,申请好空间后是把这段空间的起始地址给你,返回第一个字节的地址
在这里插入图片描述
动态内存申请可能失败(总共20的空间,你要申请300)
在这里插入图片描述
用完要释放
在这里插入图片描述

calloc

在这里插入图片描述
在这里插入图片描述

realloc 重新开辟空间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

realloc 也可以第一个参数为NULL,则是直接开辟内存,类似于malloc用法

在这里插入图片描述

常见的动态内存错误

对空指针进行解引用操作

在这里插入图片描述
在这里插入图片描述

对开辟的内存越界访问

在这里插入图片描述
在这里插入图片描述

对非动态开辟的内存使用free释放

在这里插入图片描述
在这里插入图片描述

使用free释放动态开辟内存的一部分

在这里插入图片描述
p不在指向动态开辟出来的内存的起始位置会出问题,p不走到最后,走到一半也不行
在这里插入图片描述
在这里插入图片描述
中间也不行
在这里插入图片描述

对同一块动态内存多次释放

在这里插入图片描述
在这里插入图片描述

如何避免对同一块内存释放两次


在这里插入图片描述

动态开辟的内存忘记释放,内存泄漏

在这里插入图片描述

几个 经典笔试题

题目1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改正确1
在这里插入图片描述
修改正确2
在这里插入图片描述

题目2

在这里插入图片描述
在这里插入图片描述
错误,不要返回栈区的地址
在这里插入图片描述
加static没事在全局区了
在这里插入图片描述
在这里插入图片描述

题目3

在这里插入图片描述
在这里插入图片描述
改正
在这里插入图片描述

题目4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改正
在这里插入图片描述

C++/C程序内存开辟

内核空间:留给内核使用的一段空间,内核态,4G的内存留2G给操作系统用
在这里插入图片描述

在这里插入图片描述

柔性数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

cpu的访问速度是超级快的,而内存的读写速度又比较慢,那怎么办呢?我们有一种方式就是把内存的数据放到高速缓存里,高速缓存放到寄存器里 ,当cpu每次处理数据的时候去寄存器里拿,效率就会快,寄存器找不到就去cache里找,cache里找不到就去内存里找,
在这里插入图片描述
这两种写法是一个意思,大小是位置的称为柔性数组成员,即数组的大小是可以调整的
在这里插入图片描述

包含柔性数组成员 的结构体大小计算

结构体的大小是不包含柔性数组的
在这里插入图片描述

柔性数组的使用

在这里插入图片描述
在这里插入图片描述
重新分配内存
在这里插入图片描述
在这里插入图片描述
第二种写法
在这里插入图片描述
也可以不malloc,直接创建个结构体变量,那就是在栈上了
在这里插入图片描述

动态通讯录


在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
改进
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ps不是malloc出来的不用释放
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Playwright 集成在 Jenkins 中进行端到端自动化测试

根据之前的文章,我们大致了解了前端测试的类型以及 Playwright 的基本使用。在我们完成了 Playwright 的搭建后,我们需要将测试引入到正常开发流程中来。 不过,在流程中总不可能每次在产品端发生变化后(通常涉及多个组件&#xf…

如何正确查看容器的CPU使用率

进入容器中top,虽然看到的PID是容器的,但是%Cpu的统计信息却是宿主机的。 如图 原理 进程的cpu使用率是如何计算出来的? 每个进程的状态是放在文件里的,在/proc目录下,每个进程有自己pid命名的文件夹, …

基于Python大数据的微博舆情分析,微博评论情感分析可视化系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

冲上热搜-奇安信今年的年终奖。。

最近,奇安信宣布全员无年终奖,同时冲上了脉脉热搜榜第一。作为网安界的一哥,奇安信的决定无疑给许多期待年终奖的员工带来了沉重的打击。 从公司内部的绩效考核机制来看,奇安信将员工分为了5个档次:S、A、B、B、B-。而大多数员工被评定为中等的B档,这意味…

宝塔面板实现内网端口映射教程

内网穿透是一种技术,它允许外部网络(如互联网)的设备或用户访问内网(如本地局域网)中的服务。在使用宝塔面板(BT-Panel)时,你可以通过安装和配置一些插件来实现内网穿透。 以下是一…

2024年团队程序设计天梯赛模拟赛 L1 + L2

目录 L1 - 6 剪切复制 L1 - 8 小偷踩点 L2 - 1 推宝塔 L2 - 2 含茶量 L2 - 3 到底爱不爱我 L2 - 4 寻宝图 L1 - 6 剪切复制 使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl X)。请实现一个简单的具有剪切和粘贴功能的文本…

每天五分钟计算机视觉:基于卷积操作完成滑动窗口的图片分类?

本文重点 我们前面学习了使用不同大小的滑动窗口来滑动图片,然后切分成许多小的图片,然后依次应用到我们已经训练好的图像分类模型中,但是这种方式效率太低了,本节课程我们学习一种新的方式,来看一下如何并行识别这些剪切的图片。 原始结构 首先我们先来看一下,如何把…

中国12.5米DEM地形瓦片数据免费领取!

之前向大家公开了中国34个省12.5米DEM地形瓦片数据的免费领取链接,大家对12.5米DEM数据的使用需求很强烈,领取也很积极,也有不少读者反馈能否提供全国范围的12.5米DEM地形瓦片数据,因为分省级地形瓦片数据想要合并成全国数据&…

朗致集团面试-Java架构师

总结 三轮面试,第一轮是逻辑测试性格测试,第二轮是技术面试(面试官-刘老师),第三轮是CTO面试(面试官-屠老师)。如果第三轮面试通过,考官会问你薪资意向,如果满意的话HR就…

【网络编程】web服务器shttpd源码剖析——命令行和文件配置解析

hello !大家好呀! 欢迎大家来到我的网络编程系列之web服务器shttpd源码剖析——命令行解析,在这篇文章中,你将会学习到在Linux内核中如何创建一个自己的并发服务器shttpd,并且我会给出源码进行剖析,以及手绘…

WAF攻防-权限控制代码免杀异或运算变量覆盖混淆加密传参

知识点 1、脚本后门基础&原理 2、脚本后门查杀绕过机制 3、权限维持-覆盖&传参&加密&异或等 章节点: WAF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段。 代码表面层免杀-ASP&PHP&JSP&a…

Element入门

安装ElementUI组件库 npm install element-ui2.15.3 引入 import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue;Vue.use(ElementUI);new Vue({el: #app,render: h > h(App) }); 应用 模板 …

C++笔记:异常

文章目录 C 运行时错误处理机制及其不足之处C 异常概念异常的使用异常的抛出和匹配原则在函数调用链中异常栈展开匹配原则异常的重新抛出举例演示说明例子一:串联举例演示大部分原则例子二:模拟服务器开发中常用的异常继承体系例子三:异常的重…

代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、46.全排列II

491. 非递减子序列 思路: 在90.子集II (opens new window)中我们是通过排序,再加一个标记数组来达到去重的目的。 而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。 所以不能使用之前的去重逻辑&…

「GO基础」起源与演进

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Spring容器结构

文章目录 1.基本介绍1.Spring5官网2.API文档3.Spring核心学习内容4.几个重要概念 2.快速入门1.需求分析2.入门案例1.新建Java项目2.导入jar包3.编写Monster.java4.src下编写Spring配置文件1.创建spring配置文件,名字随意,但是需要放在src下2.创建Spring …

Python景区票务人脸识别系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Zabbix监控内容

目录 一、自定义监控内容 1、在客户端创建自定义key 1.1明确需要执行的linux命令 1.2创建zabbix监控项配置文件,用于自定义Key 1.3服务端验证测试 2、在Web界面创建自定义监控模板 2.1创建模板 2.2创建应用集(用于管理监控项) 2.3创建…

探索音质与价格的平衡点:iBasso DX260播放器体验

专业的音乐播放器作为音乐爱好者们追求高音质体验的重要工具,但是因为市面上这类产品价格差距往往很大,选择也是非常丰富,所以对于新手来说往往会难以抉择。而且今天的音乐播放器在高端和低端市场也是有着云泥之别,想要找一款在价…

PCB---Design Entry cis 绘图 导出

修改纸张大小: 画图前准备:导入 画图: 习惯: 电源朝上 地朝下 配置pbc_footprint编号: 都配置好编号就可以导出了 导出: