网站怎么做结算/软文营销的宗旨是什么
1、static有什么用途?
在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数
限制变量的作用域,设置变量的存储域。
static 关键字主要有两种作用:
第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。
第二,实现某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。具体而言,在Java语言中,static 主要有 4 种使用情况:成员变量、成员方法、代码块和内部类。
定义全局静态变量 :在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点:
(1) 在全局数据区内分配内存
(2) 如果没有初始化,其默认值为0
(3) 该变量在本文件内从定义开始到文件结束可见
定义局部静态变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:
(1) 该变量在全局数据区分配内存
(2) 如果不显示初始化,那么将被隐式初始化为0
(3) 它始终驻留在全局数据区,直到程序运行结束
(4) 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。
定义静态函数:在函数的返回类型加上static关键字,函数即被定义成静态函数。静态函数有以下特点:
(1) 静态函数只能在本源文件中使用
(2) 在文件作用域中声明的inline函数默认为static
说明:静态函数只是一个普通的全局函数,只不过受static限制,他只能在文件坐在的编译单位内使用,不能呢个在其他编译单位内使用。
在C++语言中新增了两种作用:定义静态数据成员或静态函数成员
(1) 定义静态数据成员。静态数据成员有如下特点:
内存分配:在程序的全局数据区分配
初始化和定义:静态数据成员定义时要分配空间,所以不能在类声明中定义
(2) 静态成员函数。静态成员函数与类相联系,不与类的对象相联系。静态成员函数不能访问非静态数据成员。原因很简单,非静态数据成员属于特定的类实例,主要用于对静态数据成员的操作。
静态成员函数和静态数据成员都没有this指针。
2、引用与指针的区别?
指针和引用
指针:指针就是内存地址,指针变量是用来存放内存地址的变量。不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。
引用:引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间.
类型& 引用变量名= 引用实体; 且引用类型必须和引用实体是同种类型的.
引用的主要用途是:修饰函数的形参和返回值.
在C++语言中,函数的参数和返回值的传递方式有三种:值传递,指针传递和引用传递.引用具有指针的效率,又具有变量使用的方便性和直观性.
实际上引用可以做的事,指针都可以做,为什么还要引用呢?
引用体现了最小特权原则,即给予程序元素完成其功能的最小权限. 指针能够毫无约束的操作内存中的任何东西,尽管功能强大,但是非常危险.
区别
1、初始化:引用在定义时必须初始化,指针则没有要求(尽量初始化,防止野指针)
2、引用在初始化引用一个实体后,就不能再引用其它实体,而指针可以在任意时候指向一个同类型实体
3、没有NULL引用,但是有nullptr指针
4、在sizeof中含义不同: 引用结果为引用类型的大小,但指针始终是地址空间,所占字节个数(32位平台占4个字节)
5、引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
6、有多级指针,但没有多级引用
7、访问实体的方式不同:指针需要显式解引用,引用编译器自己处理
7、引用比指针使用起来相对安全
3、描述实时系统的基本特征
在特定时间内完成特定的任务,实时性和可靠性。
实时操作系统(RTOS) 是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系 统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求 在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改 变之后就可以变成实时操作系统。
分时操作系统使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空 间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的 使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
4、全局变量和局部变量在内存中是否有区别?什么区别?
全局变量存储在静态数据库,局部变量存储在栈。
局部变量(Local Variable):定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。
全局变量(Global Variable):定义:所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。
5、什么是平衡二叉树?
左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1.
6、栈溢出一般是由什么情况导致的?
没有回收垃圾资源。
堆栈工作方式:
堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的 ,也就是所有操作均在堆栈顶端进行,遵循“先进后出”的特征。
原理说明:
2.1:堆区栈区内存分配原则
·栈顶的地址和栈的最大容量是由系统预先规定的,只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常来提示栈发生溢出。
·堆区是由程序员自己申请,指明大小,程序最后进行释放,若程序员不释放,程序结束时可能由操作系统回收(注意,如果是C/C++语言,程序不进行对空间回收,而Java语言中有专门的垃圾回收器进行回收)。
2.2:溢出原理:
堆栈溢出是说堆区和栈区的溢出,二者同属于缓冲区溢出。从上面关于堆区和栈区的解释可以看出,一旦程序确定,堆栈内存空间的大小就是固定的,当数据已经把堆栈的空间占满时,再往里面存放数据就会超出容量,发生上溢;当堆栈中已经没有数据时,再取数据就无法取到了,发生下溢。
3.原因分析:
3.1:堆栈尺寸设置过小:
由堆栈溢出的定义便可知,堆栈尺寸设置过小时,其能储存的内容过小,容易发生溢出。
3.2:递归层次太深或函数调用层次过深导致堆栈溢出
函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,保存的调用现场和变量太多,当超过栈的空间长度时,即发生溢出就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。
int A(int i)
{if(递归终止条件){return 0;//中止递归}else{for(){A();//使用循环进行递归}}
}
这样的递归结构在for循环次数过多,且递归中止条件一直无法满足时,栈内存就会产生溢出。
int B (int j);
int A(int i)
{if(递归终止条件){return 0;//中止递归}else{B();}
}
int B(int j)
{for(){A();}
}
对比两种结构,一种是不断递归,第二种是将循环部分放到另一个函数中,当程序进入B()函数后,A()函数就已经结束了,它占用的栈内存就可以得到释放,所以不会产生过多的函数嵌套。
3.3:动态申请空间使用之后没有释放。
对于C语言,由于没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间,如果不释放,程序结束后该部分空间依然存在,还可以继续访问,也就是说这部分依然占据着堆空间,剩余的堆空间减少,就可能造成堆区溢出。
3.4:数组访问越界。
C语言没有提供数组下标越界检查,如果在程序中出现数组下标访问超出数组范围,在运行过程中可能会内存访问错误。
3.5:指针非法访问。
指针保存了一个非法的地址,通过这样的指针访问所指向的地址时会产生内存访问错误。
总结:
堆栈溢出其实可以细分为堆溢出和栈溢出,在通常情况下会有如下情况(对应了前面讲的原因中的前三点,后两点为内存访问错误的情况):
1.堆溢出:不断的new 一个对象,一直创建新的对象,
2.栈溢出:死循环或者是递归太深,递归的原因,可能太大,也可能没有终止。
相关文章:

c语言面试题目整理
1、static有什么用途? 在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数 限制变量的作用域,设置变量的存储域。 static 关键字主要有两种作用: 第一,为某特定数据类型或对…...

【嵌入式Bluetooth应用开发笔记】第三篇:初探BLUE ALSA应用开发
概述 BlueALSA(Bluetooth Audio ALSA)是一种将蓝牙音频设备连接到 ALSA 音频系统的桥接程序。它提供了一个蓝牙音频设备的 ALSA 插件,允许使用 ALSA API 直接从蓝牙音频设备读取和写入音频数据,从而使得蓝牙音频设备能够以与其他 ALSA 兼容设备相同的方式工作。 BlueALSA …...

C++基础了解-21-C++ 继承
C 继承 一、C 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,不需要重新编写新的…...

To_Heart—游记——NOI 春季测试
快点投降吧! Day 1 考试了。 10min T1 ,20min 打了 T2 的暴力,发现不会就跑了、 看到 T3 一眼计算几何,不会,去看 T4。看数据范围,感觉是网络流 。大概这个时候已经 1hour 了。 然后挣扎。觉得不能最大流…...

Laya小游戏开发,laya3D美术篇——1——关于laya自带的几个shader的基础运用讲解。
最近三年,基本上做的都是laya小游戏项目。也就是微信小程序,很多业内同行都觉得laya做小游戏不好用,去用了其他平台,甚至还有些做app游戏的,都不来趟laya这个坑。原因有那么以下几点。laya对于unity的辅助开发…...

brew 的安装与使用 (Apple Silicon CPU的Mac机型完成适配)
准备 ARM版Homebrew需要安装在/opt/homebrew路径下,早期的时候需要手动创建目录执行命令,目前使用最新脚本不需要手动操作。 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"然后还需设置环境…...

传输线的物理基础(四):传输线的特性阻抗
特性阻抗和控制阻抗对于一条均匀的线,无论我们选择看哪里,我们都会看到沿线传播时相同的瞬时阻抗。有一个表征传输线的瞬时阻抗,我们给它起了一个特殊的名字:特性阻抗。有一个瞬时阻抗是均匀传输线的特征。我们将这种恒定的瞬时阻…...

(六十九)以MySQL单表查询来举例,看看执行计划包含哪些内容(2)?
今天我们继续来说执行计划里包含的数据访问方式,上次说了const和ref,以及ref_or_null,想必大家都理解了,今天来说说其他的数据访问方式 先说说range这个东西,这个东西顾名思义,其实就是你SQL里有范围查询的…...

Linux发行版的backport
遇到一个问题,简要记录如下: base on ubuntu18.06 4.15内核,这版内核不支持一款intel的集成网卡,追踪内核代码的提交历史才发现,这款网卡是从linux-4.20才开始支持的,系统自带的这个Kernel版本不支持。 如果不允许升级内核,面对这种问题,社区的做法是把新内核的特性cher…...

GitLab 存储型XSS漏洞 (CVE-2023-0050)
漏洞描述 GitLab 是由GitLab公司开发的、基于Git的集成软件开发平台。kroki是一款集成在GitLab的基于文本的图表描述自动转为图片的开源工具,在GitLab 13.7引入。 由于Kroki中lib/banzai/filter/kroki_filter.rb对接收的image_src过滤不严,具有AsciiDo…...

HTTPS加密流程
什么是HTTPSHTTPS是加密后的HTTP,相当于:HTTPS HTTP SSL/TLSHTTPS是基于"密钥"来实现的,客户端将发送的数据用密钥进行加密,服务器将收到的数据用密钥解密.对称加密和非对称加密对称加密是指:交互双方共同使用同一个密钥进行加密 或 解密.如下(图中的客户端和服务器…...

Binder通信原理与弊端解析
Binder 定义 简单来说,Binder 就是用来Client 端和 Server 端通信的。并且 Client 端和 Server 端 可以在一个进程也可以不在同一个进程,Client 可以向 Server 端发起远程调用,也可以向Server传输数据(当作函数参数来传ÿ…...

网络使用情况监控
您的网络是否经常成为网络紧张或带宽瓶颈的牺牲品?瓶颈并不一定意味着带宽不足;它们可能是由占用带宽到严重网络威胁等任何因素造成的。密切监控您的网络并分析带宽使用情况和网络流量对于找到问题的根源非常重要。NetFlow Analyzer是最先进的网络使用情…...

业务流程图TFD和数据流程图DFD例题
业务流程图(TFD)管理业务流程图(Transaction Flow Diagram,简称TFD)用来描述系统各部门、人员之间存在的业务关系、作业顺序以及管理信息流向的图表。绘制该图使用以下四种符号:例题例题1:物资订…...

react框架基础入门
前端三大框架:angularvue —-2||3react区别:vue国内框架 封装较完成。全程使用封装的api来完成。react国外技术框架—-偏向于底层js实现。没有的大量的封装。需要使用js手动实现。react需求在不断增大。必会框架。官网https://react.docschina.org/ 中…...

C++ ,JNI, Java 数据传递全解(一)
在讲正题之前,先说一下C,JNI和Java 对应的数据类型对比吧,废话不多说,直接上图上面为C,Java,JNI 三者只见对应的数据类型好了,现在我们有了上面的数据类型比对,下面就讲讲从C如何将数…...

【Unity逆向】玩游戏遇到的“飞天锁血”是怎么实现的?
文章目录前言什么是外挂?锁血瞬移都是怎么做的?Unity引擎的致命缺陷是什么?WEB入侵如何做到?Unity外挂攻防概述典型游戏现实应用Unity开发流程Unity工作界面打包发布方式MonoMono跨平台原理JIT方式优点:因此后期Unity发…...

Spring基础与创建
目录 前言 Spring基础与核心概念 Spring是什么 1、什么是容器 2、什么是IoC 3、理解SpringIoC 4、DI(依赖注入) Spring的创建和使用 1、创建Spring项目 1.1、创建一个普通Maven项目 1.2、添加Spring框架支持 1.3、添加启动类和main方法 2、…...

虚拟机系列教程:虚拟机克隆
克隆主要是对磁盘文件进行操作。 1)完整克隆 a、拷贝虚拟机磁盘文件 b、生成虚拟机配置文件 centos7-2 291b0480-955a-45e2-a001-690fded69d1b c、导入xml并启动 [rootcentos8 ~]# virt-clone -o centos7 --auto-clone ERROR 要克隆的域必须已经关闭。 [rootcent…...

iperf3主页官方信息
iPerf 是一款支持TCP,UDP和SCTP的高速协议测试工具 网络极限性能测试网络中立性检测 主页 下载iPerf安装包 公共的iPerf3服务器 iPerf用户手册 iPerf论坛—法语 联系我们 iPerf / iPerf3简介 iPerf3是一款用于对IP网络的最大带宽进行主动测试的工具。提供对和时间&…...

Linux-0.11 kernel目录进程管理sched.c详解
Linux-0.11 kernel目录进程管理sched.c详解 sched.c主要功能是负责进程的调度,其最核心的函数就是schedule。除schedule以外, sleep_on和wake_up也是相对重要的函数。 schedule void schedule(void)schedule函数的基本功能可以分为两大块,…...

AI已到,普通人的机会在哪里?
“普通人赚到钱很难 但是被骗到钱很容易”。每当火起来一个行业(或者仅是一个概念),都会有人来问:现在去做点什么,能够踩上风口?普通人的赚钱机会在哪?怎么做能够暴富?让我们先来看看…...

CSP-J2022入门组二轮补赛试题(山东)T2:宴会
题目链接 CSP-J2022入门组二轮补赛(山东)第2题:宴会 题目背景 今人不见古时月,今月曾经照古人。梦回长安,大唐风华,十里长安花,一日看尽。 唐长安城是当时世界上规模最大、建筑最宏伟、规划布局最为规范化的一座都城。其营建 制度规划布局的特点是规模空前、创设皇城…...

ubuntu 使用 CMake 构建 Qt5 项目
Qt 概述 概念 Qt 是一个跨平台的 C 图形用户界面应用程序框架 常见的 C GUI: Qt 和 MFC 跨平台 Windows Linux MacOS 嵌入式平台 版本 包括商业版和开源免费版 案例 Linux 桌面环境 KDE WPS Office Qt 安装 下载地址: https://download.qt.io/archive/qt/ http…...

ZooKeeper命令及JavaAPI操作
ZooKeeper数据模型 ZooKeeper是一个树形目录服务,其数据模型和Uiix的文件目录树很类似,拥有一个层次化结构。这里面的每一个节点都被称为:ZNode,每个节点上都会保存自己的数据和节点信息。节点可以拥有子节点,同时也允…...

云医疗信息系统源码(云HIS)商业级全套源代码
云his系统源码,有演示 一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好地服务。 私信了解更多&…...

u盘拔掉再插上去文件没了原因|文件恢复方法
如果您遇到了“u盘拔了再插文件变空了”的类似问题困扰,请仔细阅读文本,下面将分享几种方法来恢复u盘上丢失的文件,赶紧来试试!为什么u盘拔掉再插上去文件没了“我的u盘为什么放进东西后拔出,再插进电脑去东西就没有了…...

CorelDRAW2023详解新增七大功能 ,CorelDRAW2023最新版本更新怎么样?
CorelDRAW2023新功能有哪些?CorelDRAW2023最新版本更新怎么样?让我们带您详细了解! CorelDRAW Graphics Suite 2023是矢量制图行业的标杆软件,2023年全新版本为您带来多项新功能和优化改进。本次更新强调易用性,包括更…...

LearnOpenGL-光照-4.光照贴图
本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject 文章目录光照贴图漫反射贴图例子1镜面光贴图例子2 采样镜面光贴图小结什么是光照贴图光照贴图如何影响颜色光…...

ThreadLocal解析
ThreadLocal是一个存储线程本地变量的对象,在ThreadLocal中存储的对象在其他线程中是不可见的,本文介绍ThreadLocal的原理。 1、threadLocal使用 有如下代码: Slf4j public class TestThreadLocal {public static void main(String[] args…...