C语言----动态内存管理(2)

1.这里总结动态内存管理里面的错误

(1)使用malloc开辟空间以后直接赋值

这个就是malloc开辟失败返回空指针,直接给空指针赋值就是错误的,

tip1:使用malloc开辟空间以后一定要判断是否为空

(2)

越界访问:一共20字节,一循环20*4=80字节,造成越界访问

(3)释放非动态开放

(4)释放动态内存的一部分

这里指针虽然移动了,但是不能从中间某个位置开始释放,只会从头

(5)对一块空间多次释放

这个的解决方案就是及时置为NULL,这样第二次的释放就不起作用了

(6)内存忘记释放(内存泄露)

动态内存空间,只有2种方式还回去,一种是free释放,2是程序退出

这个在函数里面,出作用域以后就没了,所以会出现内存泄漏,应该及时释放,或者让主函数知道

2.笔试题目

#######(1)

传递str变量本身,只有把地址取出来才是传递地址

--1.getmemory里面的形参开辟了空间,但是对test里面的实参没有影响

---2.这里面相当于对空指针解引用,程序会崩溃,因为要想拷贝,就要*dest=*src,相当于对空指针

进行解引用操作

---3.开辟的空间,没有释放,存在内存泄漏

----4.printf(str)实际上给的是首个元素的地址,所以跟打印字符串的效果是一样的

这个是修改方案

(1)这里无非就是想把开辟的80字节给str,我们传地址就可以了,然后使用二级指针进行接收

(2)这样传递地址就可以把80字节空间给str,这个时候我们依然可以释放空间,置为空指针

######2.

(1)显然,这里是随机值,

(2)数组名是数组首个元素的地址,p向内存申请空间,返回地址,我们可以知道地址,可以找到

这块空间,但是他的生命周期结束,内存还给操作系统,访问就相当于野指针。

(3)这种问题就是访问栈空间的地址问题,其实最简单的就是局部变量,如下:

########3.

这里是可以输出的,问题就是没有free释放,释放之后置为空指针,打印之后应该释放掉;

#######4.

(1)开辟100字节空间,但是释放之后需要置为空指针

3.脑图

4.内存区域分配

在栈区创建,会自动销毁,但是malloc,realloc等开辟的空间放在堆区,需要程序员手动释放

普通的局部变量在栈区开辟空间,static修饰了以后放在数据段,也就是静态区,这些在程序结束

才会销毁,所以他的生命周期比较长。

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

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

相关文章

Python批量提取文件夹中图片的名称及路径到指定的.txt文件中

目录 一、代码二、提取效果 一、代码 import os# 定义要保存的文件名 file_name "TestImage/Image_Visible_Gray.txt"# 读取文件夹路径 folder_path "TestImage/Image_Visible_Gray"# 遍历文件夹中的所有文件 with open(file_name, "w") as f…

IO进程线程day1

编写链表&#xff0c;链表里面随便搞点数据&#xff0c;使用fprintf将链表中所有的数据保存到文件中&#xff0c;用fscanf读取文件中的数据写入链表中 #include <stdio.h> #include <stdlib.h>typedef struct Node {int data;struct Node* next; } Node;// 创建新…

可移植性(兼容性)测试指南

可移植性是指应用程序能够安装到不同的环境中&#xff0c;在不同的环境中使用&#xff0c;甚至可以移动到不同的环境中。当然&#xff0c;前两者对所有系统都很重要。就PC软件而言&#xff0c;鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变化&#xff0…

抖店如何运营?新手应该怎么做?从入门到精通详细讲解!

我是电商珠珠 做抖店必须先搞懂它的基础流程&#xff0c;流程搞懂了&#xff0c;才能有进一步的可能。不要急功近利&#xff0c;想要一口吃个胖子&#xff0c;这样做就会直接造成店铺被清店&#xff0c;扣除保证金&#xff0c;甚至还会埋怨自己没用。 我做电商已经三年多的时…

vue3 日期延后一天

问题&#xff1a;提交信息时要求将所选日期延后一天进行提交解决过程&#xff1a;1.定义延后一天的计算方法&#xff0c;在提交前&#xff0c;将提交日期传入调用该方法 2.对延后的日期进行格式化&#xff0c;最后格式为yy-mm-dd解决结果&#xff1a; const…

c++ - pointer convert - class member function‘s pointer <==> void*

文章目录 c - pointer convert - class member functions pointer <> void*概述笔记END c - pointer convert - class member function’s pointer <> void* 概述 想将结构体中的void指针赋值为类成员函数的指针, 用于回调. 这个结构体相关的函数写完, 就不用再因…

Stable Diffusion中的Clip模型

基础介绍 Stable Diffusion 是一个文本到图像的生成模型&#xff0c;它能够根据用户输入的文本提示&#xff08;prompt&#xff09;生成相应的图像。在这个模型中&#xff0c;CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型扮演了一个关键的角色&a…

Biotin aniline,生物素苯胺,用于研究蛋白质结构和功能

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;769933-15-5&#xff0c;Biotin aniline&#xff0c;生物素苯胺&#xff0c;Biotin-aniline&#xff0c;生物素-苯胺 一、基本信息 【产品简介】&#xff1a;Biotin aniline is composed of three parts: biotin, w…

个人或者小团队选择C语言还是c++?

个人或者小团队选择C语言还是c? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff0…

使用Python语言实现一个基于动态数组的序列队列

一、动态数组的实现 首先&#xff0c;我们需要创建一个DynamicArray类&#xff0c;该类将管理我们的动态数组。 动态数组能够动态地调整其大小&#xff0c;以容纳更多的元素。 目录 一、动态数组的实现 代码示例&#xff1a; 二、序列队列的实现 接下来&#xff0c;我…

学习JAVA的第八天(基础)

目录 多态 前提 形式 测试类 调用成员的特点 优势 劣势 包 注意事项&#xff1a; final关键字 常量 命名规范&#xff1a; 注意事项&#xff1a; 权限修饰符 分类 代码块 局部代码块 构造代码块 静态代码块 抽象类 抽象类&#xff1a; 定义格式 抽象…

代码随想录算法训练营第五天

● 自己看到题目的第一想法 242. 有效的字母异位词 方法&#xff1a; 方法一&#xff1a; 暴力法 1. 分别对s, t排序 2. 遍历s与t 判断s[i]!t[i] 返回 false 否则 返回true思路&#xff1a; 注意&#xff1a; 代码&#xff1a; bool cmp(char a, char b){return a<b;…

网站搭建的基本流程是什么?

网站搭建的基本流程是什么? 我们选择了白嫖雨云的二级域名 浏览器输入https://www.rainyun.com/z22_ 创建账号然后选择一个你喜欢的子域名我建议后缀选择ates.top的 选择自定义地址&#xff0c;类型选择cname 现在要选择记录值了&#xff0c;有a&#xff0c;aa&#xff0c;txt…

【Logback】Logback 的配置文件

目录 一、初始化配置文件 1、logback 配置文件的初始化顺序 2、logback 内部状态信息 二、配置文件的结构 1、logger 元素 2、root 元素 3、appender 元素 三、配置文件中的变量引用 1、如何定义一个变量 2、为变量设置默认值 3、变量的嵌套 In symbols one observe…

Swift的基本数据类型

1. Int类型&#xff1a;用于表示整数&#xff0c;包括正整数和负整数。 let age: Int 30 let numberOfStudents 50 2. Double和Float类型&#xff1a;用于表示浮点数&#xff0c;即带有小数点的数值。Double提供更高的精度&#xff0c;而Float提供较低的精度。 let pi: Do…

如何压缩word文档中的图片大小?一键批量压缩~

在日常工作和学习中&#xff0c;我们经常需要创建和编辑Word文档&#xff0c;并在其中插入图片来丰富内容。然而&#xff0c;随着图片的增加&#xff0c;Word文档的大小可能会急剧增加&#xff0c;导致文件变得庞大&#xff0c;不便于传输和共享。针对这个问题&#xff0c;本文…

C++/WinRT教程(第四篇)WinRT 的错误和异常处理

目录 前言 避免捕获和抛出异常 捕获异常 抛出异常 编辑API时抛出异常 使用 noexcept 时如何调试 调用同步代码 快速失败 断言 前言 本文主要介绍 C/WinRT 中的异常如何使用以及使用原则&#xff0c;如果你刚开始接触WinRT&#xff0c;建议先阅读第一篇。 C/WinRT教程…

67-箭头函数,new.target,模版字符串

1.箭头函数 ES6新增语法&#xff0c;用来简化函数的书写()>{} <script>//箭头函数的基本使用let a (a,b)>{return ab;}let c a(1,2);console.log(c);//输出3</script> 2.简写形式&#xff1a; 2.1参数&#xff1a;只有一个参数时可以省略小括号a>{}&…

面试经典 150 题 ---- 轮转数组

面试经典 150 题 ---- 轮转数组 轮转数组方法一&#xff1a;使用额外的数组方法二&#xff1a;数组翻转 轮转数组 方法一&#xff1a;使用额外的数组 我们可以使用额外的数组来将每个元素放至正确的位置。用 n 表示数组的长度&#xff0c;我们遍历原数组&#xff0c;将原数组…

Java底层自学大纲_JVM篇

JVM专题_自学大纲所属类别学习主题建议课时&#xff08;h&#xff09; A 深入理解Java虚拟机001 JVM类加载器设计原理2.5 A 深入理解Java虚拟机002 基于SPI破解双亲委派机制2.5 A 深入理解Java虚拟机003 JVM内部结构分析2.5 A 深入理解Java虚拟机004 字符串常量池原理2.5 …