oc中的self是什么意思BSS段是什么

如图,一条公路的转弯处是一段圆弧(图中的AB),点O是这段弧的圆心,C是AB上一点,OC⊥AB,垂足为D,AB=_百度知道
提问者采纳
解:∵AB=160m,∴BD=80m,根据勾股定理可得:OB2=BD2+OD2,即OB2=602+(OB-40)2,解得OB=100.故答案是:100.
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁SECTIONS中.bss .text .data区别 - CSDN博客
在采用的架构中,BSS段(bss segment)通常是指用来存放中未的的一块内存区域。BSS是英文Block
Started by Symbol的简称。BSS段属于。
在采用的架构中,数据段(data segment)通常是指用来存放中已的的一块内存区域。数据段属于。
在采用的架构中,代码段(text segment)通常是指用来存放执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域属于只读。在代码段中,也有可能包含一些只读的常数变量,例如等。
堆栈又称堆栈(stack)在计算机科学中,是一种特殊的链表形式的数据结构,它的特殊之处在于只能允许在链表的一端(称为栈顶,英文为top)进行添加和删除操作。另外堆栈数据结构的实现也可以通过数组来完成。
严格来说堆是指Heap,程序运行时供程序员来支配的一段内存。而栈Stack,多指函数调用时候参数的相互传递存在的内存区域。
由于堆栈数据结构只允许在一端进行操作,因而按照先进后出(LIFO-Last In First Out)的原理工作。
堆栈数据结构支持两种基本操作:压栈(push)和弹栈(pop):
1.&&&&&&&&&&&&&&&&& 压栈(入栈):将对象或者数据压入栈中,更新栈顶指针,使其指向最后入栈的对象或数据。2.&&&&&&&&&&&&&&&&& 弹栈(出栈):返回栈顶指向的对象或数据,并从栈中删除该对象或数据,更新栈顶
==================================================================================
TI的代码产生工具产生的目标文件是一种模块化的文件格式—COFF格式,代码和数据在COFF文件中以段的形式组织,一个COFF段是在memory map中占连续空间的一块code或data。COFF文件中包含了段的完备信息,如段的绝对地址,名字,属性以及数据等。这些段可分为两种,已初始化段和未初始化段;或者另一种分法,namely code,初始化data和未初始化data。
已初始化段主要包括数据表和可执行代码,如:.text,.cinit,.const等;未初始化段用于保留存储器空间,程序利用这些空间在运行时创建和存储变量,如.bss段,.stack段,.far段,.sysmem段等。有些段并不是一定会有的,比如.sysmem段,如果C程序没有用到malloc,calloc等这些函数来分配存储器空间的话,编译器就不创建.sysmem块。每个段的具体内容是:&
& & & &.text & & & 存放可执行代码和浮点数常量&
& & & &.cinit & & & 存放已明确初始化的全局变量和静态变量&
& & & &.const & & &存放已明确初始化的字符串常量,全局常量和静态常量&
& & & &.bss & & & 存放没有初始化的全局变量和静态变量。
& & & &.stack & & 为系统堆栈分配存储器。这个存储器用于将变量传递至函数以及分配局部变量。&
.far & & & &以far声明的全局/静态变量&
.sysmem & 为动态存储器函数malloc、calloc、realloc分配存储器空间。&
在小模式中,.bss块也为常数宏保留空间。在程序开始运行时,数据从.cinit块中拷贝至.bss块,这里是可以选择的,有两个选项-c和-cr决定了全局变量和静态变量的初始化方式。-c为运行时初始化,-cr为加载时初始化。编译器生成程序时,会将C程序中初始化的全局/静态变量的初始值按一定结构放在.cinit中,但实际全局/静态变量占用的地址空间在.bss段中。如果是-c选项,那么C初始化函数c_int00()会读取.cinit段中的记录信息,分别初始化.bss段中的全局/静态变量,最后调用main()函数。如果是-cr选项,那么全局/静态变量的初始化工作由loader程序完成,而不是c_int00()函数。也就是加载程序后,loader读取.cinit段的内容,然后初始化.bss的全局/静态变量,当使用JTAG调试时,CCS就是一个loader。&
========================================================
由三部分组成:
输入/输出定义:这一部分,可以通过ccs的“Build Option........”菜单设置
&&&&&&&& 。obj&&& 链接的目标文件
&&&&&&&& 。lib&&&&& 链接的库文件
&&&&&&&& 。map&& 生成的交叉索引文件
&&&&&&&& 。out&&& 生成的可执行代码
MEMORY命令:描述系统实际的硬件资源
SECTION命令:描述“段”如何定位
-o hello.out
-m hello.map
-stack 100
-l rts2xx.lib
&& PAGE 0: VECT:origin=0x8000,length 0x040
&& PAGE 0: PROG:origin=0x8040,length 0x6000
&& PAGE 1: DATA:origin=0x8000,length 0x400
.vextors &VECT PAGE 0
.text&&& &PROG PAGE 0
.bss&&&& &DATA PAGE 1
.const&& &DATA PAGE 1
存储模型:c程序的代码和数据如何定位
.cinit&&&& 存放程序中的变量初值和常量
.const&& 存放程序中的字符常量、浮点常量和用const声明的常量
.switch& 存放程序中switch语句的跳转地址表
.text&&&& 存放程序代码
.bss&&&&&&为程序中的全局和静态变量保留存储空间
.far&&&&&& 为程序中用far声明的全局和静态变量保留空间
.stack&&& 为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果
.sysmem 用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间14843人阅读
&&&&&& 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。
Linux进程的五个段
下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么的。
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
它是由操作系统分配的,内存的申请与回收都由OS管理。
全局的未初始化变量存在于.bss段中,具体体现为一个占位符;全局的已初始化变量存于.data段中;而函数内的自动变量都在栈上分配空间。.bss是不占用.exe文件空间的,其内容由操作系统初始化(清零);而.data却需要占用,其内容由程序初始化,因此造成了上述情况。
bss段(未手动初始化的数据)并不给该段的数据分配空间,只是记录数据所需空间的大小。
data(已手动初始化的数据)段则为数据分配空间,数据保存在目标文件中。 数据段包含经过初始化的全局变量以及它们的值。BSS段的大小从可执行文件中得到 ,然后链接器得到这个大小的内存块,紧跟在数据段后面。当这个内存区进入程序的地址空间后全部清零。包含数据段和BSS段的整个区段此时通常称为数据区。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:88532次
积分:1705
积分:1705
排名:第12571名
原创:79篇
转载:12篇
评论:16条
(1)(6)(1)(2)(1)(3)(13)(1)(2)(2)(7)(3)(2)(10)(1)(6)(3)(28)text段、data段和bss段简介
一个程序的3个基本段:text段,data段,bss段。
text段在内存中被映射为只读,但.data和.bss是可写的。
text段:就是放程序代码的,编译时确定,只读;
data段:存放在编译阶段(而非运行时)就能确定的数据,可读可写。也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存放在这个区域;
bss段:定义而没有赋初值的全局变量和静态变量,放在这个区域;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 bss是什么 的文章

 

随机推荐