DOS用一种分段结构来寻址计算机的内存,每一个物理存储位置都有一个可以用段一偏移量方式来访问的相关地址。例如,下面就是一个典型的段式地址:
A000:1234
冒号左边的部分代表段地址(A000),冒号右边的部分代表相对于段地址的偏移量。DOS下的每个程序都是按这种方式访问内存的——尽管段一偏移量寻址方法的机理对大多数C程序员来说是隐蔽的。
当你的程序被执行时,一个存放在数据段(DS)寄存器中的数据段地址将被赋给你的程序。这个缺省的数据段地址指向一个64KB的内存空间,这个空间通常就
被叫做近程型数据段。在这个近程型数据段空间中,你会找到程序的栈、静态数据和近程堆。近程堆用来为程序启动时所需的全局变量和其它数据元素分配内存,在
这个空间中分配的任何数据都被叫做近程型数据。例如,下面的程序在程序启动时从近程堆中分配了32KB的近程型数据:
/ * Note :Program uses the Medium memory model...* /
# include
# include
# include
# include
# include
void main(void) ;
void main(void)
{
char * near_data;
near_data= (char * )malloc((32 * 1024) * sizeof(char)) ;
if (near data= = (char * )NULL)
{
printf("Whoopsie ! Malloc failed! \n") ;
exit