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

数据结构day2

目录

一、Makefile

二、检测内存泄漏工具:valgrind

2.1valgrind介绍    

2.2具体使用:valgrind ./a.out

三、顺序存储的优缺点

3.1优点

3.2缺点

四、线性表的链式存储:

4.1链式存储简介

4.2关于单向链表的c语言描述

4.3单项列表的功能函数


一、Makefile

关于makefile介绍请查看这篇文章:

https://blog.csdn.net/weixin_72086349/article/details/148878718?spm=1001.2014.3001.5501

二、检测内存泄漏工具:valgrind

2.1valgrind介绍    

Valgrind是一套开放源代码(GPL V2)的仿真调试工具集合,由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件(plug-in),利用内核提供的服务完成各种特定的内存调试任务。

        Valgrind 是一个强大的内存调试和性能分析工具,广泛用于 Linux 系统上的程序开发和测试。它可以帮助开发者检测内存泄漏、数组越界、未初始化变量等问题,并提供详细的报告。Valgrind 支持多种编程语言,尤其是 C 和 C++。

        Valgrind可以帮助开发者检测和修复程序中的内存问题和性能瓶颈。通过合理使用 Valgrind 的各种工具和选项,可以显著提高程序的质量和性能。

2.2具体使用:valgrind ./a.out

关键部分的解释
HEAP SUMMARY(堆内存总结):

                                          in use at exit: 程序退出时,仍然占用的内存量。这里显示为56字节。
                                          total heap usage: 堆内存的总使用情况,包括分配和释放的统计信息。
LEAK SUMMARY(泄漏总结):

                                          definitely lost: 确定的内存泄漏。显示为56字节。
                                           indirectly lost: 间接泄漏的内存。这是因为某些对象或数据结构被遗忘,导致它们无法被释放。
                                          possibly lost: 可能泄漏的内存。Valgrind不能确定,但有可能丢失。
                                          still reachable: 仍然可达的内存。内存尚未释放,但可以通过有效的指针访问。通常这不是泄漏,但可能表示内存管理不当。
                                         suppressed: 被抑制的内存问题数量。

三、顺序存储的优缺点

3.1优点

    1、无需为表中的逻辑关系增加额外的存储空间
    2、可以快速随机访问元素O(1)

3.2缺点

    1、插入,删除元素需要移动元素o(n)
    2、无法动态存储。

四、线性表的链式存储:

4.1链式存储简介

内存上不是连续存储,解决顺序存储的缺点,插入和删除,动态存储问题程序运行起来之后需要多大空间开辟多大,编写时需要多大不确定。

特点:线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的也可以不连续。可以被存储在任意内存未被占用的位置上。所以在链式结构中还需要一个元素存储下一个元素的地址。

为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。把存储元素信息的域叫数据域,把存储直接后继位置的域叫指针域。这两部分信息组成数据元素ai的存储映像,叫结点(Node);

4.2关于单向链表的c语言描述

typedef struct person {char name[32];char sex;int age;int score;
}DATATYPE;typedef struct node {DATATYPE data;struct node *next;
}LinkNode;typedef struct list {LinkNode *head;int tlen;int clen;
}LinkList;

4.3单项列表的功能函数

http://www.lryc.cn/news/574491.html

相关文章:

  • 数组题解——​合并区间【LeetCode】
  • 使用 PyAEDT 设计参数化对数周期偶极子天线 LPDA
  • 如何解决TCP传输的“粘包“问题
  • HTTP面试题——缓存技术
  • Qt面试题汇总
  • 记录一下小程序城市索引栏开发经历
  • ✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub
  • Rocky8使用gvm配置Go多版本管理的微服务开发环境
  • uni-app项目实战笔记24--uniapp实现图片保存到手机相册
  • spring01-简介
  • 618风控战升级,瑞数信息“动态安全+AI”利剑出鞘
  • window显示驱动开发—DirectX 图形基础结构 DDI
  • 【CS创世SD NAND征文】基于全志V3S与CS创世SD NAND的物联网智能路灯网关数据存储方案
  • taro小程序,tailwindcss的bg-x-x,背景颜色不生效,只有自定义的写法颜色才生效
  • C++修炼:异常
  • 解码成都芯谷金融中心文化科技产业园:文化+科技双轮驱动
  • Qt 中使用 gtest 做单元测试
  • 一文读懂微观测量:光学3D轮廓仪与共聚焦显微成像的结合应用
  • cherry-pick除了使用命令,有没有什么工具可以使用,或者更高效的方法
  • Linux 文件 I/O 与标准 I/O 缓冲机制详解
  • Java面试中被深挖过的线程问题
  • 对手机屏中断路和短路的单元进行切割或熔接,实现液晶线路激光修复原理
  • Luckysheet Excel xlsx 导入导出互相转换
  • 02-Linux内核源码编译
  • CentOS 7 编译安装Nginx 1.27.5完整指南及负载均衡配置
  • MinIO中视频转换为HLS协议并进行AES加密
  • Python Polars库详解:高性能数据处理的新标杆
  • pyqt多界面
  • LangChain网页自动化PlayWrightBrowserToolkit
  • gRPC 静态库链接到 DLL 的风险与潜在问题