2.5(完结)C语言重点解剖内存管理函数要点速记

news2025/1/20 5:55:47

1.指针如果有具体的指向,包括野指针,对应的合法性,我们是无法验证的。

2.所有的指针如果没有被直接使用,必须设置为NULL。

3.在函数内部,要验证指针的合法性,本质上是验证指针!=NULL。

4.自定义函数传入指针时不建议使用assert来检测,原因1:无法传入一个NULL指针。

原因2:只在debug下起作用。

5.指针越界不一定会报错。

6.程序退出之后内存泄漏问题就不存在了。

但是永远不会退出的程序,最害怕内存泄漏(操作系统,杀毒软件,服务器程序)。

7.用malloc申请空间,实际分配的空间比用户申请的空间大。同一种编译器,在同一种C语言标准下,多出来的空间是固定的。所以,如果要申请大的空间,建议使用动态内存开辟,如果申请小空间,建议在栈上开辟数组。

8.变量定义和语句中带空格。

9.逻辑密切的语句中不要带空格,不密切的带上空格。

10.复杂的函数,判断和分支结束的时候加上注释。

11.代码缩进一般4个空格。注释也要注意缩进。

12.用反义词组命名具有互斥意义的变量或者函数。

13.即便优先级确立了,但是仍然建议带上括号。特别是宏定义,一定要带上符号。

14.函数声明的时候,尽量把函数名带上。

15.函数参数命名要恰当,顺序要合理。

16.尽量不要省略函数的返回值。如果不需要返回值就空类类型(void)。

17.函数入口处对参数进行有效性检查,用if,或者assert(不推荐)。

18.函数的功能要单一,不要设计多用途的函数。

19.尽量避免函数有记忆功能(函数内尽量不要有static修饰的变量)。

20.尽量避免函数传入的参数过多。

21.尽量不要使用类型和数目不确定的参数。

22.函数传参的顺序是从右向左的。

23.f908f12a562040ac922c1c2f34cd0dfb.png

24.可变参数列表要有一个明确的参数。

2059e675be904a1b9f9c4d0c9faf56d2.png

 

25.在可变参数中,如果是短整型,一般都要进行int类型进行提升。

3407f6b3f479475d9d87f9c4aeadebd0.jpg

 

26.使用可变参数的时候,只能从第1个往后依次使用。

27.可变参数的底层设计和实现。

06290511809b4a9b84d73087eeae425b.jpg

71067aff69dc4783821caf02b4109e9a.jpg 

2ca65d8e03f0465f9706087865d458fb.jpg 

d87c2fda97794f159d403685d4269818.jpg 

28.GetTickCount()获取电脑开机到现在累计的时间。

b3a002d206144884abb6b48b210c3ecf.jpg

 

29.迭代(循环)和递归的比较,迭代法之所以用的时间少,是因为没有多余的函数调用,地规有大量的函数调用,而函数调用是需要成本的。

eb302a3ab3284c1e9f33f1ee40d0fb5b.png

 

 

 

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

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

相关文章

Odoo 16 企业版手册 - 库存管理之到岸成本

到岸成本 到岸成本可以定义为买方在购买时应支付的产品总价。这包括运输、关税、手续费、服务费、运费等。为了获得产品的销售价格,这些额外费用被添加到产品的实际成本中。根据公司政策,不同公司的到岸成本计算方法将有所不同。在Odoo 库存模块中&#…

JAVA中的for循环使用方法

一. 循环结构1. 概念在学习Java里的循环之前,我们先来了解一下到底什么是循环,以及循环的作用。我们先来看下面这张图:大家想一下,我们在400米的跑道上参加万米长跑,正常情况下要跑25圈,这25圈每一圈的跑步…

FPGA:逻辑运算及逻辑门

文章目录逻辑变量与逻辑函数逻辑运算基本逻辑运算及对应的逻辑门1.与运算与逻辑举例状态表与真值表与逻辑符号与逻辑表达式与门电路2. 或运算或逻辑举例电路状态表状态表与真值表或逻辑符号或逻辑表达式或门电路3. 非运算非逻辑举例电路状态表状态表与真…

Lichee_RV学习系列---认识Lichee Rv Dock、环境搭建和编译第一个程序

Lichee Rv Dock学习系列文章目录 文章目录Lichee Rv Dock学习系列文章目录前言一、认识Lichee RV1、D1-H 芯片2、Lichee RV开发板3、系统镜像二、Lichee RV 固件烧录1、要求基本硬件2、基本资料下载3、固件烧录在这里插入图片描述三、连接上开发板1、ADB方式连接a:A…

【ART-Pi学习FreeRTOS】使用STM32CubeIDE搭建开发环境

【ART-Pi】使用STM32CubeIDE搭建开发环境STM32CubeIDESTM32CubeIDE新建工程进入芯片选型界面HSE和LSE时钟源设置时钟系统(时钟树)配置Generate CodeSTM32CubeIDE STM32CubeIDE安装比较简单,这里略过,可以百度搜索相关教程 STM32…

Excel 中选择行的快捷方式有哪些

在处理不同类型的数据时,用户需要多次选择任意行或多行。在这种情况下,任何人都必须知道选择行的快捷方式。了解一些快捷键,如在Excel中选择行,使任何人都能熟练使用MS Excel,而且这对任何人以更智能的方式工作都很有帮助。当一个人开始使用快捷方式执行他的/她的工作时,…

Spring与SpringMVC的区别和联系是啥?

Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IoC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。 …

餐饮巨头被攻击的“致命”48小时

编者按数字化浪潮蓬勃兴起,企业面临的安全挑战亦日益严峻。腾讯安全近期将复盘2022年典型的攻击事件,帮助企业深入了解攻击手法和应对措施,完善自身安全防御体系。本篇是第八期,讲述了某餐饮巨头遭遇黑客多轮次攻击、全国点餐系统…

Linux ALSA 之六:ALSA ASoc 架构

ALSA ASoc 架构一、ASOC 由来二、从 HW 角度三、从 SW 角度四、重要数据结构关联图1、基于 Linux 3.0 数据结构图2、基于 Linux 4.0 数据结构图一、ASOC 由来 ASoC–ALSA System on Chip,是建立在标准 ALSA 驱动层上,为了更好地支持嵌入式处理器和移动设…

软件著作权申请注意事项

​软著申请需要哪些材料 ①企业申请:企业营业执照副本复印件(加盖公章)、身份证复印件(正反面)。 个人申请:个人身份证复印件。 ②软件设计/使用说明书文档一份 文档可根据要求提供,可以是软件…

c#使用配置文件

在我们开发软件的时候,有时候有很多的配置文件,可以把配置的参数保存到本地,那么肯定要对文件进行读和写的操作,使用SharpConfig可以很简单的实现这个功能。 下面是GitHub的介绍。 https://codeload.github.com/cemdervis/Sharp…

常见的锁策略

文章目录一、常见的锁策略乐观锁 vs 悲观锁轻量级锁 vs 重量级锁自旋锁 vs 挂起等待锁互斥锁 vs 读写锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁二、CAS原子类实现自旋锁ABA问题一、常见的锁策略 我们这里所介绍到的锁策略,不仅仅是java中的,任何涉及…

异常检测-缺陷检测-论文精读PaDiM

Abstract 我们提出了一个新的 Patch 分布建模框架,在单类学习的设置下,PaDiM 同时检测和定位图像中的异常。PaDiM 利用一个预先训练好的卷积神经网络 (CNN) 进行 patch 嵌入,利用多元高斯分布得到正常类的概率表示。它还利用了 CNN 的不同语…

基础1-用于癫痫发作预测的卷积门控递归神经网络

A Convolutional Gated Recurrent Neural Network for Epileptic Seizure Prediction ABSTRACT 在本文中,我们提出了一种卷积门控递归神经网络(CGRNN)来预测癫痫发作,基于从EEG数据中提取的代表信号的时间方面和频率方面的特征。使用波士顿儿童医院收集…

priority_queue的介绍及使用(18)

目录 1、priority_queue的介绍 2、priority_queue的使用 3、priority_queue的模拟实现 1、简单实现一个大堆的 2、带仿函数的 1、初识仿函数 2、priority_queue带仿函数版本 3、其他 1、priority_queue的介绍 1、优先队列是一种容器适配器,根据严格的弱排序…

Unity 3D 物理引擎简介 || Unity 3D 物理材质|| Unity 3D 力(AddForce)

Unity 3D 物理引擎简介 早期的游戏并没有强调物理引擎的应用,当时无论是哪一种游戏,都是用极为简单的计算方式做出相应的运算就算完成物理表现,如超级玛丽和音速小子等游戏。 较为常见的物理处理是在跳跃之后再次落到地上,并没有…

百万级数据的导出解决方案

一、传统POI的的版本优缺点比较首先我们知道POI中我们最熟悉的莫过于WorkBook这样一个接口,我们的POI版本也在更新的同时对这个几口的实现类做了更新;HSSFWorkbook : 这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前&#xff08…

SAP 系统内核版本详解

前言:之前两篇简单介绍了ABAP 7.40的新特性,那么有的时候会有这样的情况,根据新特性写代码的时候校验会不通过,这又是为啥呢?会不会跟SAP的版本有关系呢? 那么,首先我们就来看一下在SAP系统中如…

基于TC397的Bootloader开发过程中遇到的问题记录

问题11 现象:刷新流程结束之后上位机通过22服务AFFC读取刷新计数时,刷新计数会偶发地置12 分析思路:尝试用单步调试的方法复现该现象,程序中涉及到刷新计数的更新有两处,一是在34服务中擦flash前,二是在31服…

【数据结构】栈及其经典面试题详解

目录前言一、栈的介绍二、数据类型重定义三、栈的结构四、栈中的常见操作五、测试栈六、栈的常见面试题前言 前面学习的线性表中包含顺序表和链表,这两种数据结构允许在任意位置进行插入和删除,那么有没有一种数据结构是不能在任意位置进行插入删除&…