一般C语言编译后的执行语句都编译成及其代码,保存在.text段;已初始化的全局变量和局部静态变量都保存在.data段;未初始化的全局变量和局部静态变量一般放在.bss段里。我们知道未初始化的全局变量和局部静态变量默认都是0,本来他们可以存放在.data段中,但它们的值都为0,放..
分类:
其他好文 时间:
2016-04-27 07:10:23
阅读次数:
147
1.未初始化的全局变量(.bss段) bss段用来存放 没有被初始化 和 已经被初始化为0 的全局变量。如下例代码: 编译并查看: 全局变量bss_array的大小为4MB = 1024*1024*sizeof(int) Byte = 4194304 Byte。 通过size 查看可知数据被存在了 ...
分类:
其他好文 时间:
2016-04-24 20:06:35
阅读次数:
543
现在把esp、GDT等内容放进内核中,我们现在可以用C语言了,只要能用C,我们就避免用汇编。 下面看切换堆栈和GDT的关键代码: 最后这4个语句完成了切换堆栈和更换GDT的任务。StackTop定义在.bss段中,堆栈大小为2KB。 函数首先把位于Loader中的原GDT全部复制给新的GDT,然后把 ...
分类:
系统相关 时间:
2016-04-20 19:39:36
阅读次数:
267
周日讲了32位linux下的内存分布 还有关于C语言中的extern和static的用法 内存的最高1G是用作系统保留,接下来是占空间,在靠近3G的那一块 再下来是堆空间,之后是bss区,未初始化的静态变量区 然后是Rw data区 Ro data区,主要用作存储字符串类型 接下来是代码段,又名tx ...
分类:
系统相关 时间:
2016-04-19 13:55:52
阅读次数:
480
认识C和内存管理 C程序内存空间分为下面5类: stack栈: 存放着局部变量和函数参数等数据,向下生长 (可读可写可执行) heap堆: 给动态分配内存使用,向上生长 (可读可写可执行) bss segment:BSS段 用来存放未初始化的全局变量、未初始化的静态变量 和 这两种变量初始化值为0的 ...
分类:
其他好文 时间:
2016-04-18 11:45:53
阅读次数:
112
有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助。因为有好几次这样经历,我才决定花一章篇幅来介绍它。正如大家所知道的,全局变 ...
分类:
其他好文 时间:
2016-04-13 19:03:40
阅读次数:
204
最近研究代码质量检测问题,在网上找的相关资料咱是如下: 一. 一些相关概念 很多人应该比较了解这块内容了...可以权当复习复习... 1.内存空间的划分: 我们知道,一个进程占用的内存空间,包含5种不同的数据区:(1)BSS段:通常是存放未初始化的全局变量;(2)数据段:通常是存放已初始化的全局变量 ...
分类:
移动开发 时间:
2016-04-12 19:16:54
阅读次数:
297
C语言背后的运行机制,学会了会对C语言更加熟悉,可以直接看到C语言的骨头里去。 存储类(storage class): ①什么是存储类? 存储类就是变量存储类型,即变量在内存中存储在什么段。 例如:栈:普通局部变量。 数据段(.data):初始化不为零的全局变量,静态局部变量。 bss段:初始化为零 ...
分类:
编程语言 时间:
2016-04-07 06:55:24
阅读次数:
306
1、链接器脚本文件的组成: 基本构成:段:代码段.text 数据段.data bss段 .bss 起始链接地址 对齐 变量 代码段首文件 2、实例文件: SECTIONS{ . = 0x0; //设置程序起始链接地址,=左右两边要空格 . = ALIGN(4);//,设置代码段四字节对齐,=左右两边 ...
分类:
其他好文 时间:
2016-04-06 13:10:28
阅读次数:
163
一个链接器脚本里面有三个段:代码段,数据段,bss段。 除了段的信息,一个链接器脚本还应该包括:1.规定起始链接地址。2.指明对齐方式。3.还可以设置变量。4.规定哪个文件时代码首文件。 下面敲得是一段完整的链接器脚本的文件。代码首文件是指链接的时候把哪一个文件放在最前面。 使用方法为: 来自为知笔...
分类:
其他好文 时间:
2016-03-08 23:48:07
阅读次数:
197