您好!欢迎来到源码码网

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

  • 行业资讯
  • 来源:源码码网
  • 编辑:admin
  • 时间:2020-04-27 09:26
  • 阅读:499

你知道段的概念吗?


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


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关键字作用于它左边紧邻的星号指针

————————————————


原文链接:https://blog.csdn.net/randyjiawenjie/java/article/details/6359207


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • open claw最近很火,如何理性看待?
  • open claw最近很火,如何理性看待?
  • openclaw是2026年初科技圈最火爆的现象级话题。它不仅仅是又一个AI产品,更被百川智能的王小川誉为与ChatGPT诞生同等重要的里程碑——标志着AI从”只会说”的对话者,进化到了”能够做”的行动者。对于这股全民”养虾”热潮,我的观察是:它代表了一次人机关系的革命性跃迁,但同时也是一场充满风险与泡沫的狂欢,其真正的价值需要在喧嚣褪去、安全与成本的挑战被克服后才能显现。下
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-17 11:06
  • 阅读:33
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序是两种不同的开发模式,主要区别在于开发方式、性能表现、代码维护以及跨平台能力。为了让你更清晰地理解,我们可以把“原生”比作用钢筋水泥直接盖楼,而“封装”则是用预制板或套件来组装楼。以下是详细的对比分析:1.定义与本质原生小程序:定义: 直接使用微信官方提供的开发工具、语法和API进行开发。语言: 使用微信自己定义的一套技术栈(WXML(微信标记语言)做结构、WXSS(微信样式表)做样式、JS
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-06 11:54
  • 阅读:255
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • FytSoaCms一款基于NetCore2.2/3.1(RazorPage)功能强大的Cms建站系统,支持前后端分离。简介:模块化:全新的架构和模块化的开发机制,便于灵活扩展和二次开发。模型/栏目/分类信息体系:通过栏目和模型绑定,以及不同的模型类型,不同栏目可以实现差异化的功能,轻松实现诸如资讯、下载、讨论和图片等功能。通过分类信息和栏目绑定,可以自动建立索引表,轻松实现复杂的信息检索。FytSoa是一套基于NetCore+SqlS
  • 开发工具
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 22:21
  • 阅读:300
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • SmartWx微信公众号管理系统是一个完整的微信公众号web操作版,直接编译即可运行。让用户不再用关心微信的底层接口,直接使用页面进行操作,简单方便。包括服务器绑定、文本管理、图文管理、菜单管理、粉丝管理、群发消息等。技术框架开发语言:JAVA数据库:MYSQLJAVA开发框架:SpringMVC+Spring+Mybatis缓存框架:j2cache前端开发框架:Layui+JQuery+html前台模板引擎:art-templat
  • 源码教程
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 21:53
  • 阅读:295
  • 前后端分离的Java快速开发平台renren-security可免费商用
  • 前后端分离的Java快速开发平台renren-security可免费商用
  • renren-security是一个轻量级的,前后端分离的Java快速开发平台,能快速开发项目并交付【接私活利器】采用SpringBoot3.x、Shiro、MyBatis-Plus、Vue3、TypeScript、ElementPlus、VueRouter、Pinia、Axios、Vite框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。提供了代码生成器,只
  • 源码教程
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-23 13:03
  • 阅读:200
联系客服
源码代售 源码咨询 技术开发 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部