niusouti.com
更多“在存储空间布局中从低地址到高地址依次分布为()A.正文段→数据段→bss段→堆→栈B.栈→堆→bss段→数据段→正文段C.正文段→堆→栈→数据段→bss段D.堆→正文段→数据段→bss段→栈”相关问题
  • 第1题:

    Windows内存分配归为两个类型,是( )

    A.段分配、块分配

    B.段分配、堆分配

    C.块分配、栈分配

    D.栈分配、堆分配


    正确答案:D
    解析:内存分配分为分栈配和堆分配。栈上分配的内存系统自动释放,堆上分配的内存,系统不释放。栈一般是静态分配内存,堆上一般是动态分配内存。

  • 第2题:

    程序中全局变量的存储空间在( )分配。

    A.代码区
    B.静态数据区
    C.栈区
    D.堆区

    答案:B
    解析:
    本题考查程序语言基础知识。程序运行时的用户内存空间一般划分为代码区、静态数据区、栈区和堆区,其中栈区和堆区也称为动态数据区。全局变量的存储空间在静态数据区。

  • 第3题:

    C程序中全局变量的存储空间在( )分配

    A.代码区
    B.静态数据区
    C.栈区
    D.堆区

    答案:B
    解析:
    本题考查程序设计语言内存分配知识点。一个由c/c++编译的程序占用的内存分为以下几个部分:

    1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

    2.堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,链表的数据空间必须采用堆存储分配策。

    3.全局区(静态区)(static):全局变量和静态变量的存储是放在这一块的。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。

    4.文字常量区:常量字符串就是放在这里的,程序结束后由系统释放。

    5.程序代码区:存放函数体的二进制代码

  • 第4题:

    下列()不是数据空间的使用方法和管理方法。

    • A、静态存储分配
    • B、栈式动态存储分配
    • C、堆式动态存储分配
    • D、段页式存储分配

    正确答案:D

  • 第5题:

    下列哪项可在协议栈的网络层中找到?()

    • A、数据报或分组
    • B、数据帧
    • C、比特或字节
    • D、数据段

    正确答案:A

  • 第6题:

    装箱是将堆中的数据封装成对象放到栈中的过程,拆箱将栈中的数值存放到堆中的过程。


    正确答案:错误

  • 第7题:

    请描述CPU发生中断时入栈和出栈的过程,并分析堆栈段中数据的存储方式及栈指针变化之间的关系。


    正确答案: 堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其它子程序前,先将需要保存的数据压入堆栈中保存。以备返回时,再复原当时的数据。供主程序继续执行。 转入中断服务程序或子程序时,需要保存的数据可能有若干个,都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套,那么需保存的数据就更多,这要求堆栈还需要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。
    M.CS-51的堆栈是在RAM中开辟的,即堆栈要占据一定的RAM存储单元。同时MCS-51的堆栈可以由用户设置,SP的初始值不同,堆栈的位置则不一定,不同的设计人员,使用的堆栈区则不同,不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,SP就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间,CPU都是根据SP指示的地址与相应的RAM存储单元交换数据。
    堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给PC,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为PUSH指令,在中断服务程序或子程序调用时作为现场保护。出栈操作POP指令,用于子程序完成时,为主程序恢复现场。
    在执行中断子程序或者调用别的子程序时,系统会自动把当前的断点地址压入堆栈进行保护,执行完子程序即遇到RET或者RETI时,把断点地址弹出装入PC中,从而返回原程序的断点处继续往下执行。当你的主程序和子程序都用到某些标志位时,需要把他们也进行堆栈保护。比如你的主程序有加减乘除法,中断子程序中也有,那么你就必须对ACC,PSW等标志寄存器进行保护,因为你在执行中断程序的加减法时可能已经有进位或者借位,已经改变了某些标志位,而回到主程序中时若主程序的加减法没有进位时,标志位在子程序中已被改变,现在就可能出错了。所以在进入中断子程序时要首先把这些标志位(即ACC和PSW)保存起来即PUSH ACC和PUSH PSW,子程序结束时释放:POP PSW和POP ACC,以便回到主程序时能正确的继续运行。

  • 第8题:

    执行CALLFARPTRSUBR2时,正确的说法是()。

    • A、先将断点的段地址入栈,再将偏移地址入栈
    • B、先将断点的偏移地址入栈,再将段地址入栈
    • C、先将SUBR2的段地址入栈,再将偏移地址入栈
    • D、先将SUBR2的偏移地址入栈,再将段地址入栈

    正确答案:A

  • 第9题:

    单选题
    非初始化数据段由exec赋初值常称为()。
    A

    正文段

    B

    数据段

    C

    bss段

    D


    正确答案: B
    解析: 暂无解析

  • 第10题:

    问答题
    说明.text段、.data段和.bss段分别包含什么内容?

    正确答案: .text段(文本段),通常包含可执行代码;
    .data段(数据段),通常包含初始化数据;
    .bss 段(保留空间段),通常为未初始化变量保留存储空间。
    解析: 暂无解析

  • 第11题:

    填空题
    COFF目标文件中.text段通常包含(),.data段通常包含己初始化的数据,.bss段中通常为()保留空间。

    正确答案: 可执行代码,未初始化的数据
    解析: 暂无解析

  • 第12题:

    单选题
    下列()不是数据空间的使用方法和管理方法。
    A

    静态存储分配

    B

    栈式动态存储分配

    C

    堆式动态存储分配

    D

    段页式存储分配


    正确答案: A
    解析: 暂无解析

  • 第13题:

    下列术语中,与数据的存储结构有关的是______。

    A.队列

    B.栈

    C.二叉树

    D.堆


    正确答案:C

  • 第14题:

    SP寄存器中存放的是()。

    A.堆栈段有效地址
    B.代码段有效地址
    C.数据段有效地址
    D.堆栈段的段地址

    答案:A
    解析:

  • 第15题:

    进栈/出栈指令PUSH/POP的内存操作数的段地址只能是()。

    • A、CS
    • B、ES
    • C、DS
    • D、SS

    正确答案:D

  • 第16题:

    当8086进行堆栈操作时,CPU会选择()段寄存器,再和()或者()形成20位堆栈地址。


    正确答案:堆栈;堆栈指针SP;基址指针BP

  • 第17题:

    非初始化数据段由exec赋初值常称为()。

    • A、正文段
    • B、数据段
    • C、bss段
    • D、堆

    正确答案:C

  • 第18题:

    SP的作用是用来表示()

    • A、栈底指针
    • B、栈顶指针
    • C、下一条执行指令的地址
    • D、段基地址

    正确答案:B

  • 第19题:

    在TCP/IP协议栈的每一层,数据包都有不同的名称。请问,数据段是协议栈种哪种协议传输的单位?()

    • A、TCP
    • B、UDP
    • C、IP
    • D、ICMP

    正确答案:A

  • 第20题:

    在存储空间布局中从低地址到高地址依次分布为()。

    • A、正文段→数据段→bss段→堆→栈
    • B、栈→堆→bss段→数据段→正文段
    • C、正文段→堆→栈→数据段→bss段
    • D、堆→正文段→数据段→bss段→栈

    正确答案:A

  • 第21题:

    单选题
    在存储空间布局中从低地址到高地址依次分布为()。
    A

    正文段→数据段→bss段→堆→栈

    B

    栈→堆→bss段→数据段→正文段

    C

    正文段→堆→栈→数据段→bss段

    D

    堆→正文段→数据段→bss段→栈


    正确答案: A
    解析: 暂无解析

  • 第22题:

    单选题
    多线程中栈与堆是公有的还是私有的()
    A

    栈公有,堆私有

    B

    栈公有,堆公有

    C

    栈私有,堆公有

    D

    栈私有,堆私有


    正确答案: A
    解析: 暂无解析

  • 第23题:

    问答题
    说明.text段、.data段、.bss段分别包含什么内容?

    正确答案: .text段在内存中被映射为只读,但.data和.bss是可写的。
    .bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定,用户应该将它定义在可读写的RAM区内,源程序中使用malloc分配的内存就是这一块,它不是根据data大小确定,主要由程序中同时分配内存最大值所确定,不过如果超出了范围,也就是分配失败,可以等空间释放之后再分配。
    .text段是程序代码段,表示程序段的大小,它是由编译器在编译连接时自动计算的,当你在链接定位文件中将该符号放置在代码段后,那么该符号表示的值就是代码段大小,编译连接时,该符号所代表的值会自动代入到源程序中。
    .data包含静态初始化的数据,所以有初值的全局变量和static变量在data区。段的起始位置也是由连接定位文件所确定,大小在编译连接时自动分配,它和你的程序大小没有关系,但和程序使用到的全局变量,常量数量相关。
    解析: 暂无解析