C++面经:初始化全局变量和未初始化全局变量有什么区别
全局变量初始化而且初始值不为0,那么这样的全局变量是放在内存的.data段的,如果全局变量初始值为0或者未初始化,那么这样的全局变量是放在.bss段的。
考点:
考察C/C++语言内存模型,.data,.bss段存放的内容。
C语言内存模型(内存组织方式)
C程序开发并编译完成后,要载入内存(主存或内存条)才能运行,变量名、函数名都会对应内存中的一块区域。
内存中运行着很多程序,我们的程序只占用一部分空间,这部分空间又可以细分为以下的区域:
1.程序代码区:存放函数体的二进制代码。
2.静态数据区(data area):也称全局数据区,包含的数据类型比较多,如全局变量、静态变量、一般常量、字符串常量
(1).全局变量区和静态变量区的存储是返回在一块的,初始化的全局变量和静态变量在一块区域。未初始化的全局变量和未初始化的静态变量在相邻的另一区域。
(2).常量区域包括字符串常量和一般常量存储在另一区域
注意:静态区的内存在程序结束后由系统释放。
3.堆区:一般由程序员分配和释放,若程序员不释放,则程序运行结束后由系统回收。malloc(),calloc(),free(),操作的就是这块内存。
注意:这里的堆区不同于数据结构的堆,堆区的分配方式倒是和数据结构的链表比较相似。
4.栈区:由系统自动分配释放,存放函数的参数值和局部变量的值等。其操作方式类似于数据结构中的栈。
5.命令形参区:存放命令型参数和环境变量的值,如通过main()传递的值。
注意:未初始化的全局变量的默认值是 0,而未初始化的局部变量的值却是垃圾值(任意值)。
#include <stdio.h>#include <conio.h>int global;int main(){int local;printf("global = %d\n", global);printf("local = %d\n", local);getch();return 0;}
#include<stdio.h>#include<stdlib.h>#include<string.h>int a = 0; // 全局初始化区(④区)char *p1; // 全局未初始化区(③区)int main(){int b; // 栈区char s[] = "abc"; // 栈区char *p2; // 栈区char *p3 = "123456"; // 123456\0 在常量区(②),p3在栈上,体会与 char s[]="abc"; 的不同static int c = 0; // 全局初始化区p1 = (char *)malloc(10), // 堆区p2 = (char *)malloc(20); // 堆区// 123456\0 放在常量区,但编译器可能会将它与p3所指向的"123456"优化成一个地方strcpy(p1, "123456");}
相关文章:
C++面经:初始化全局变量和未初始化全局变量有什么区别
全局变量初始化而且初始值不为0,那么这样的全局变量是放在内存的.data段的,如果全局变量初始值为0或者未初始化,那么这样的全局变量是放在.bss段的。 考点: 考察C/C语言内存模型,.data,.bss段存放的内容。 …...
vue-2 指令:
指令 什么是html属性:就是用来扩展html标签的功能,属性是写在html的开发标签中:属性“属性值”, 指令就是用来扩展在vue中标签的功能 {{}} :模板语法,文本插值 不可解析html标签 {{ 可以写变量&#x…...
非常提效的7款原型工具推荐
原型图工具允许在开发前进行测试和迭代过程,可以帮助节省大量的开发时间和成本。在本文中,我们盘点了7个易于使用的原型图工具,以提高您的生产力! 1.即时设计 即时设计是一款免费的在线 UI 设计工具,无系统限制&…...
最新Kafka和RabbitMQ消息队列经典面试题汇总(含答案)
最新Kafka和RabbitMQ消息队列经典面试题汇总 1.消息队列的应用场景有哪些?2.RabbitMQ 有哪些优点?3.RabbitMQ 有哪些重要的角色?4.RabbitMQ 有哪些重要的组件?它们有什么作用?5.什么是消息持久化?6.RabbitMQ 要实现消息持久化,需要满足哪些条件?7.消息持久化有哪些缺点…...
软件测试行业对新人友好吗?
软件测试真的算是对新人小白非常友好的学科了,但是你也千万不要抱有幻想,觉得轻轻松松就能掌握真正的技能,然后如愿找到高薪工作。从0到1还是需要一个过程的,也是需要你付出相当大的努力去学习的 随着人工智能时代的到来…...
Python requests 模块
Python中的requests模块是一个HTTP客户端库,它允许您向任何Web服务器发送HTTP请求并获取响应。 下面是一个简单的示例,向某个网站发送一个HTTP GET请求: python import requests response requests.get("http://www.example.com&quo…...
IOC理论推导
1.UserDao接口 package com.kuang.dao;public interface UserDao {void getUser(); }2.UserDaoImpl业务接口 package com.kuang.dao;public class UserDaoImpl implements UserDao{Overridepublic void getUser() {System.out.println("默认获取用户数据");} }3.Us…...
我的一些感悟
记录一些感悟,不定时更新 当面临稍微突发的情况时,感到慌乱;遭遇一点挫折时,情绪低落;面对问题,不是首先思考解决办法,而是抱怨不已。这种心态基本上无法取得成功 做事雷厉风行,需要…...
NC 人力薪酬管理怎么结账?
NC 人力薪酬管理结账流程 1、先在【薪资发放】节点选择相应的薪资方案进行查询操作,然后进行计算操作; 2、计算操作完后,再进行审核操作; 3、如果薪资方案勾选了“发放数据需要审批”属性,则需要在【发放申请】节点…...
JavaWeb编程面试题——Spring Boot
目录 引言一、面试题导航二、面试题目1.什么是SpringBoot?2.谈谈你对SpringBoot的理解?3.为什么需要SpringBoot?4.SpringBoot的配置文件有哪几种格式?5.SpringBoot支持哪些日志框架?推荐和默认的日志框架是哪个&#x…...
Educational Codeforces Round 148 (Rated for Div. 2) A,B,C
A. New Palindrome 要求:对于一个回文串,判断是否可以转换为其他回文串 思路:如果回文串的前一半存在不相同的字符,就可以转换 #include<bits/stdc.h> using namespace std;int n; string s;void solve(){cin>>s;boo…...
C#串口通信从入门到精通(15)——流量控制(XON/XOFF协议实现)
文章目录 前言1、XON/XOFF流控原理介绍2、XON/XOFF发送端C#代码实现3、XON/XOFF接收端C#代码实现前言 通信双方在一个发送能力大于接收处理能力时若不限制发方的数据流量则最终会“淹没”接收方而导致数据丢失,针对这个问题常规的有硬件流控和软件流控方法,本文介绍的就是软…...
基于Kubernetes集群构建大中型企业CICD应用平台(2)--code阶段工具gitlab安装
这里我们为gitlab服务器准备一台虚拟机:192.168.19.6-gitlab服务器 在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。…...
数字化转型浪潮下,如何选择适合企业的低代码平台
近日,艾瑞咨询发布了《数字新生态:中国低代码厂商发展白皮书》(以下简称“报告”),在该报告中,艾瑞咨询对中国当前的低代码市场进行了非常细致的解构,并针对当前企业数字化转型,对低…...
利用 Amazon API Gateway 和 Amazon Lambda 处理 Cloudfront 的内容请求
概述 国内 Amazon Cloudfront 目前不支持 Lambdaedge 功能,不能实现基于 CDN 的 A/B 测试、rewrite、redirect、token 认证和产生 response 等功能,本文介绍如何利用 API Gateway 和 Lambda 实现 Lambdaedge 的功能。下面实验介绍通过 request header 参…...
Parasoft和TASKING联手提供卓越的汽车软件开发和自动化测试
Parasoft与TASKING宣布建立合作 2023年4月26日,全球嵌入式软件测试解决方案领导者Parasoft宣布与汽车嵌入式软件开发工具行业领导者TASKING建立合作伙伴关系。Parasoft和TASKING的合作为汽车行业提供了一套完整的软件全生命周期解决方案,通过CI/CD工…...
java读取word文档内容
首先在pom文件引入依赖: <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId&g…...
使用Process Monitor排查因dll库被锁定导致C++程序启动报“0xc0000022”错误问题
目录 1、问题描述 2、查找到异常值0xc0000022对应的标识STATUS_ACCESS_DENIED 3、使用Process Monitor定位到哪个dll库被隔离了 4、在360安全卫士中将被隔离的文件恢复了,但360并没有释放对文件的锁定 VC常用功能开发汇总(专栏文章列表,欢…...
Unity UI -- (1)概览
UI(User Interface,用户接口),是让用户和计算机或计算机应用交互的接口系统。 在实时3D项目中,UI通常是由文本、按钮、复选框、滑动条和单选框等组合出来的界面。这些元素使用特定规则或通知和用户进行交互。 UI设计是…...
玩转 LLMs 之基础设施「利刃出鞘」
LLMs 时代已经到来,这个由 ChatGPT 开始的全球化技术浪潮,所经之处,风起云涌。LLMs 之于当下,更像是 iOS 、Android 之于移动互联网时代。开发者沸腾,投资机构争抢,与赛道相关的基础设施建设自然也成为整个…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
