动态内存面试的经典题目

news2025/2/27 17:27:06

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

👑💎💎👑💎💎👑 
💎💎💎自💎💎💎
💎💎💎信💎💎💎
👑💎💎 💎💎👑    希望在看完我的此篇博客后可以对你有帮助哟

👑👑💎💎💎👑👑   此外,希望各位大佬们在看完后,可以互赞互关一下,看到必回
👑👑👑💎👑👑👑


前言:

各位老铁们,咱可千万不要忽视动态内存相关知识点的学习,因为后期数据结构主要是在内存上进行数据的管理,这就不可避免的用到动态内存的知识点,而且很容易出现内存的报错

所以对这方面的练习是不可避免滴

 题目一:

 来看一下这个程序能否正常跑起来?那么输出的结果是啥?若是不能那么这个程序面临什么问题?

 分析如下:

1)代码第11行:并没有实现为str开辟空间

  这就涉及到了传值传参的问题:因为想要改变str这个指针变量的值,我需要传对应的地址 &str ,而不是传str这个变量

2)代码第12行:对空指针的解引用

因为此时str是指向NULL

3)内存泄漏:malloc出来的空间没有释放

4)最终:程序并不会打印  hello world 

改正之后的程序

 

 题目二:

 

 对于这个问题:我相信会有一些老铁们说这不就打印 hello world 

分析如下:

 典型问题:返回栈空间地址

1)返回栈空间地址:对于GetMemmory函数里的数组p(局部变量),当出了GetMemory函数,p指向的那个空间就会还给系统,原有的内容覆盖掉

2)非法访问:代码第34行

此时str仍然是可以拿到p对应的那个地址(虽然p指向的空间还给系统,但p没有置空),这时就造成非法访问了

 题目三:

分析如下:

相信在对题目一的理解,这个自然就so easy

程序可以正常运行

注意:对于堆上开辟出来的空间(动态开辟的)要不free释放要么就是程序结束自动释放

但是有没有想过这样一个问题:对于那种 7*24小时跑的程序会释放空间吗?这不就造成内存泄露了嘛

内存泄漏:malloc出来的空间忘记释放

 题目四:

分体如下:

 非法访问:代码第60行

str本省已经被free了,他所指向下那块空间已经归还给了系统,但是str并没有置空,所以代码60再次对他进行访问,就造成了非法访问

但是有老铁就说了,那为什么程序可以正常打印world呢?

这就涉及到了函数栈帧的创建与销毁的知识了

可能是:此时str指向的空间还给系统之后,恰巧赶上没有其他的占用

 结语:

相信大家对动态内存管理应该有了自己的一定了解了吧,希望给位老铁可以有自己的一个新的体悟。

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

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

相关文章

大创项目推荐 深度学习疲劳驾驶检测 opencv python

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

Resize:最近邻插值、双线性插值、双三次插值

Resize:最近邻插值、双线性插值、双三次插值 Opencv resize函数1. 最近邻插值(INTER_NEAREST)1.1 原理1.2 代码实例1.3 简单的代码复现1.4 特点 2. 双线性插值(INTER_LINEAR)(默认值)2.1 原理2.…

Rust-解引用

“解引用”(Deref)是“取引用”(Ref)的反操作。取引用,我们有&、&mut等操作符,对应的,解引用,我们有操作符,跟C语言是一样的。示例如下: 比如说,我们有引用类型p:&i32;,那么可以用符…

[笔记]深度学习入门 基于Python的理论与实现(三)

代码仓库 gitee 3. 神经网络 神经网络的出现就是为了解决设定权重的工作,即机器自动从数据中学习,确定合适的、能符合预期的输入与输出的权重。 3.1 从感知机到神经网络 神经网络和感知机有很多共同点,这里主要介绍差异 3.1.1 神经网络例子…

数据库|数据库范式(待完成)

文章目录 数据库的范式数据库的基本操作什么是数据库的范式产生的背景(没有规范化的坏处/带来的问题)规范化表格设计的要求五大范式的作用——树立标准打个比方——桥的承载能力1NF(1范式)如何转换成合适的一范式 2NF(…

Flask 项目怎么配置并创建第一个小项目?附上完成第一个小案例截图

目录 1. 为什么要学习 flask? 2. flask 是什么? 3. flask 如何使用? 要安装 Flask,可以按照以下步骤进行: 4. 使用流程 4.1. 新建项目 4.1.1. 打开 pycharm,新建项目 4.1.2. 设置目录,并…

centos7 arm服务器编译安装PaddlePaddle

前言 随着国产服务器发展,部署项目需要用在国产服务器上,官方教程里面很多没有讲解到,安装过程中出现了各种各样的问题,以下是对官方教程的补充,有什么问题,欢迎指正! 一、环境准备 gcc: 8.2版…

Python 网络编程之TCP详细讲解

【一】传输层 【1】概念 传输层是OSI五层模型中的第四层,负责在网络中的两个端系统之间提供数据传输服务主要协议包括**TCP(传输控制协议)和UDP(用户数据报协议)** 【2】功能 **端到端通信:**传输层负责…

数学建模-预测人口数据

目录 中国09~18年人口数据 创建时间 绘制时间序列图 使用专家建模器 得到结果 预测结果 残差的白噪声检验 中国09~18年人口数据 创建时间 路径:数据-> 定义日期和时间 绘制时间序列图 使用专家建模器 看看spss最终判断是那个模型最佳的契合 得到结果 预…

什么是NTFS格式文件系统?Tuxera NTFS for Mac2024下载步骤

一般磁盘格式分为:FAT、FAT32、NTFS,这几种格式目前是我们最常遇到的文件系统格式,其中现在遇到最多的就是NTFS格式,为更好地了解这类文件系统格式,小编今天专门介绍一下什么是NTFS格式文件系统以及它的特点和局限性。…

网络安全ctf比赛/学习资源整理,【解题工具、比赛时间、解题思路、实战靶场、学习路线】推荐收藏!

对于想学习或者参加CTF比赛的朋友来说,CTF工具、练习靶场必不可少,今天给大家分享自己收藏的CTF资源,希望能对各位有所帮助。 CTF在线工具 首先给大家推荐我自己常用的3个CTF在线工具网站,内容齐全,收藏备用。 1、C…

Chapter 10 类的继承(上篇)

目的:了解三种继承方式,并清楚其中的差别 🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃…

【JVM】垃圾回收 GC

一、前言 垃圾回收(Garbage Collection,GC)是由 Java 虚拟机(JVM)垃圾回收器提供的一种对内存回收的一种机制,它一般会在内存空闲或者内存占用过高的时候对那些没有任何引用的对象不定时地进行回收。以避免…

imgaug库指南(26):从入门到精通的【图像增强】之旅(万字长文!)

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

在uni-app中使用sku插件,实现商品详情页规格展示和交互。

商品详情 - SKU 模块 学会使用插件市场,下载并使用 SKU 组件,实现商品详情页规格展示和交互。 存货单位(SKU) SKU 概念 存货单位(Stock Keeping Unit),库存管理的最小可用单元,通…

电子签章服务器,如何解决无纸化最后一公里?

钉钉、飞书、企微、OA、ERP等主流企业办公系统,无法实现电子签章,往往审批后还要将合同文件打印出来再进行签章。实现无纸化办公的这最后一公里就成了难题。电子签章服务器的出现,提供了完美的解决方案。本文将从专业角度,探讨电子…

大模型压缩与优化的技术原理与创新方法

目录 前言1 模型压缩简介2 知识蒸馏3 模型剪枝3.1 结构化剪枝3.2 非结构化剪枝 4 模型量化4.1 浮点表示 vs 定点表示4.2 位数选择与性能影响4.3 量化技术 5 其他模型压缩方法5.1 Weight Sharing: 参数共享5.2 Low-rank Approximation: 低秩分解5.3 Architecture Search: 神经网…

C++ 设计模式之观察者模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 前面的文章介绍了创建型模式和结构型模式,今天开始介绍行为型模式。 【简介】什么是…

Oracle AWR报告的生成和解读

Oracle AWR报告的生成和解读 一、AWR报告概念及原理 Oracle10g以后,Oracle提供了一个性能检测的工具:AWR(Automatic Workload Repository 自动工作负载库)这个工具可以自动采集Oracle运行中的负载信息,并生成与性能相…

评估文字识别准确性的方法与流程

随着信息技术的发展,文字识别技术在各个领域得到了广泛的应用。然而,在实际应用中,如何评估文字识别的准确性,一直是相关领域的一个难题。本文将介绍几种常用的文字识别准确性评估方法,以期为相关领域的研究提供参考。…