C语言深入学习--checklist7:链接、运行时数据结构、申明

2023-11-12

1.  你知道段的概念吗?

段是二进制文件中的简单区域,里面保存了某种特定的类型(如符号表条目)相关的所有信息。

1.       可执行程序分为几个段?每个段保存什么内容?

可执行程序分为三个段:BSS段、数据段、文本段

BSS段(Block Started by Symbol)存放未经初始化的全局变量和未初始化的静态变量;

数据段存放经过初始化的全局变量和静态变量;

文本段存放可执行文件的指令;

当然可执行文件还有其它内容,如神奇数字等等;

当可执行程序被读入内存成为一个进程的时候,还要包括堆栈段。

堆栈段中主要存放局部变量、malloc申请的变量、进行函数调用的维护信息、

2.       如何查看可执行程序各个段的大小?

使用size命令

size a.out(文本段、数据段、BSS)

3.  当函数被调用的时候,发生了什么?

当每个函数被调用的时候,堆栈都会产生一个过程活动记录。

4.  你有没有试过程序的最大栈空间?程序超过此大小会发生什么?

测试栈容量:

运行时候就提示错误:在WINDOWS下,栈的大小是2M(也有的是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。

测试最大的堆容量:

在我的机器上,结果如下:

Allocated 1918 MB total.

5.  如何知道系统的栈是向下生长还是向上生长的?

  

http://leomayleomay.blogbus.com/logs/4822542.html给出了一个不依赖编译器实现的程序;概念栈帧,意思就是与一次函数调用有关的全部信息:参数、返回地址和局部变量等等

在我的机器上,是向下生长的;

 

 

Include

如何避免对同一个头文件的多次include?

使用条件包含:

 

申明:

1.  什么是申明,什么是定义?

申明是告诉编译器对象的类型和名字

定义是确定对象的类型并进行分配内存,用于创建新的对象

2.  你是否会运用C语言申明的优先级规则?

C语言申明的优先级规则

C专家编程》P64

A.  申明从它的名字开始读取,然后按照优先级顺序依次读取。

B.  优先级从高到低依次是:

1.  申明中被括号括起来的那部分;

2.  后缀操作符:

括号()表示这是一个函数,而方括号[]表示一个数组;

3.  前缀操作符:星号*表示“指向……的指针“

C.      如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long等)那么它作用于类型说明符。在其它情况下,const和(或)volatile关键字作用于它左边紧邻的星号指针

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言深入学习--checklist7:链接、运行时数据结构、申明 的相关文章

随机推荐

  • Linux系统之安装java开发环境

    Linux系统之安装java开发环境 一 java介绍 1 java简介 2 java的三大平台 3 java的主要特性 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三 清空java环境 1 删除java目录 2 移除所有
  • 不高兴的津津1073

    Description 津津上初中了 妈妈认为津津应该更加用功学习 所以津津除了上学之外 还要参加妈妈为她报名的各科复习班 另外每周妈妈还会送她去学习朗诵 舞蹈和钢琴 但是津津如果一天上课超过八个小时就会不高兴 而且上得越久就会越不高兴 假
  • 经典Proxool.properties

    数据库1jdbc 1 proxool alias WEBGISjdbc 1 proxool driver class oracle jdbc driver OracleDriverjdbc 1 proxool driver url jdbc
  • JNLP 文件无法打开的解决办法

    JNLP Java Network Launching Protocol 是 java 提供的一种可以通过浏览器直接执行 java 应用程序的途径 它使你可以直接通过一个网页上的 URL 连接打开一个 java 应用程序 因此 要运行 jn
  • 用户·角色·权限·表

    一 引言 因为做过的一些系统的权限管理的功能虽然在逐步完善 但总有些不尽人意的地方 总想抽个时间来更好的思考一下权限系统的设计 权限系统一直以来是我们应用系统不可缺少的一个部分 若每个应用系统都重新对系统的权限进行设计 以满足不同系统用户的
  • React新特性hooks中memo,usememo,useCallback的区别

    useMemo memo类似于PureCompoent 作用是优化组件性能 防止组件触发重渲染 memo针对 一个组件的渲染是否重复执行
  • 江苏开票系统安全接入服务器地址,江苏省增值税发票查询平台网址.doc

    江苏省增值税发票查询平台网址 江苏省增值税发票查询平台网址 81 增值税发票查询平台于2016年5月27日在全国36个省 市 自治区升级完毕 目前全国统一版本为V2 0 00 新版本上线后 功能更加强大和人性化 为了使广大纳税人能更加正确
  • nginx出现 “414 request-uri too large”

    公司项目有一个模块 在请求查询的时候使用了Get方法 由于拼接的url过长 导致nginx出现了 414 request uri too large 错误 出现这种问题可以按照如下解决 在nginx的nginx conf修改如下参数的 cl
  • git check-pick,git patch 与 git stash 详解

    大家好 我是 17 今天和大家聊一聊 git check pick git patch 与 git stash 的用法 git cherry pick 为什么要用 cherry pick 不适合 merge 的场景就可以考虑 cherry
  • mysql数据库——思维导图

    学完mysql后 自己弄得的思维导图 原图30 6MB 太大了放不上来 这里就放个链接吧 欢迎大家去看 如果有需要改正的地方 请告诉我 谢谢 链接 https www zhixi com view 718f3805 密码 6522 下面是M
  • Android 动态权限判断是否允许的几种方式及测试

    一 说在前面 由于各个系统厂商定制 checkSelfPermission在有些机型上是始终为0的 也就是允许 这个问题非常头疼嘞 于是手持一加对三种方式进行了测试 以read sms权限为例 二 检查方式 常用的检查 ContextCom
  • java 内存分配管理_JAVA实验操作系统内存管理-最优分配,最先分配,最坏分配算法...

    package Memory import java util ArrayList import java util Iterator import java util Scanner public class OS ArrayList f
  • 用这个算法能让大数据集群性能提升100倍!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情概要 二 背景引入 三 问题凸现 四 Hadoop的优化方案 一 前情概要 这篇文章给大家聊聊Hadoop在部署了大规模的集群场景下 大量客户端并发写数
  • K8S安装部署Nacos集群

    1 在k8s中部署的难点 在k8s中部署nacos集群和在裸机器上直接部署nacos机器其实差别不大 最主要的区别是k8s中部署的服务没有固定的ip地址 而nacos集群部署需要配置所有实例的ip 2 解决 在k8s中通过StatefulS
  • day06 Spring AOP

    DI注解 作用 解决使用xml配置繁琐的问题 该注解和使用配置文件一样分成两类进行注入 字段注入或属性注入 注入bean 取代xml中的ref 1 value注解 使用value注解给属性进行赋值 只能使用于八大基本类型和常量类型 Stri
  • Woedpress分类目录绑定二级域名

    实现分类目录和二级域名绑定需要使用 WordPress 的多站点功能 Multisite 以下是一个基本的步骤和示例代码来实现这个功能 代码实现方法 步骤 将 WordPress 安装为多站点模式 在 WordPress 安装目录下的 wp
  • verdi使用linux命令,vcs和verdi的调试及联合仿真案例

    环境配置 首先搭建好vcs和Verdi都能工作的环境 主要有license问题 环境变量的设置 在220实验室的服务器上所有软件的运行环境都是csh 所以 所写的脚本也都是csh的语法 生成波形文件 Testbench的编写 若想用Verd
  • 机器学习实战8-基于XGBoost和LSTM的台风强度预测模型训练与应用

    大家好 我是微学AI 今天给大家介绍一下机器学习实战8 基于XGBoost和LSTM的台风强度预测模型训练与应用 今年夏天已经来了 南方的夏天经常会有台风登陆 给人们生活带来巨大的影响 本文主要基于XGBoost模型和长短期记忆 LSTM
  • 淘宝滑动验证码研究

    引言 悠闲的时候 总会去找些事做做 前些天在登录淘宝的时候 发现了滑动验证码 虽然已经不是什么新事物 但还是产生了很大的兴趣 传统的字符输入验证码 变为了滑动验证码 这一看就是产品大师的手笔啊 不知道申请专利没有 这种 情感化 的验证码设计
  • C语言深入学习--checklist7:链接、运行时数据结构、申明

    1 你知道段的概念吗 段是二进制文件中的简单区域 里面保存了某种特定的类型 如符号表条目 相关的所有信息 1 可执行程序分为几个段 每个段保存什么内容 可执行程序分为三个段 BSS段 数据段 文本段 BSS段 Block Started b