b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(114)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

内存管理器块总是以4个字节进行对齐,并总是拥有一个4字节的头,这里包含内存块的大小及其它信息位。这意味着,内存管理器块总是以双字的形式优化排列,以保证定位内存块时CPU的效能发挥得最好。

内存管理器维护着两个状态变量:AllocMemCount和AllocMemSize,它们保存着当前分配的内存块数目、以及这些内存块的总容量。在调试时,应用程序可以利用这些变量来显示状态信息。

System单元提供了两个过程:GetMemoryManager和SetMemoryManager,它们允许程序拦截底层的内存管理器调用。System单元还提供了GetHeapStatus函数,它返回一个包含内存管理器详细状态信息的记录结构。

Variables(变量)

全局变量在程序的数据段分配,并且在程序运行期间一直存在;局部变量(在过程或函数内声明)存在于程序的堆栈中,每次调用过程或函数,局部变量进行分配,而调用结束后,局部变量被清除。编译器优化可能提前消除变量(比如使用寄存器)。

注意:在Linux下,堆栈大小只能由环境设置。

在Windows下,一个程序的堆栈由两个值定义:堆栈的最小值和最大值。这两个值受编译器指示字 $MINSTACKSIZE 和 $MAXSTACKSIZE 所控制,它们的缺省值分别是16,384(16K)和1,048,576(1M)。程序保证拥有最小容量的堆栈空间,且不允许超过堆栈的最大值。如果空闲内存不能保证最小的堆栈需求,Windows在启动程序时会报告出错。

如果程序需要的堆栈容量超过最小值,它会以4K的幅度自动增加。如果分配额外的堆栈失败,可能是没有足够的空闲内存,或者堆栈容量达到了它所允许的最大值。此时,将引发EStackOverflow异

- 153 -

Memory management

常(堆栈溢出检查完全是自动的。编译器指示字 $S 原先是控制堆栈溢出检查的,保留它是为了向后兼容性)。

在Windows或Linux下,由GetMem或New过程创建的动态变量是在堆中分配的,除非使用FreeMem或Dispose命令进行释放,否则它们将一直存在。

长字符串、宽字符串、动态数组、variant以及接口在堆中进行分配,但它们的内存是自动管理的。 Integer types(整数类型)

整型变量的格式取决于于它的最小值和最大值边界:

?

?

?

?

?

?

? 若边界都介于 -128..127(Shortint),存储为有符号字节(signed byte) 若边界都介于 0..255 (Byte),存储为无符号字节(unsigned byte) 若边界都介于 -32768..32767(Smallint),存储为有符号字(signed word) 若边界都介于 0..65535(Word),存储为无符号字(unsigned word) 若边界都介于 -2147483648..2147483647(Longint), 存储为有符号双字(signed double word) 若边界都介于 0..4294967295(Longword),存储为无符号双字(unsigned double word) 否则(Int64),存储为有符号四字(signed quadruple word)

Character types(字符类型)

Char、AnsiChar或Char的子界类型存储为一个无符号字节,WideChar存储为一个无符号字。 Boolean types(布尔类型)

Boolean类型存储为Byte,ByteBool也存储为Byte,WordBool存储为Word,LongBool存储为Longint。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-114.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...