Board logo

标题: 急啊,DOS怎要得到可用内存啊?像mem那样 [打印本页]

作者: abcc     时间: 2005-10-10 20:50    标题: 急啊,DOS怎要得到可用内存啊?像mem那样

急啊,DOS怎要得到可用内存啊?像mem那样
作者: Michael     时间: 2005-10-10 21:24
mem
作者: abcc     时间: 2005-10-10 21:33    标题: 我是问写程序哦,mem连傻根都知道


作者: Michael     时间: 2005-10-10 22:00
傻根儿还知道写程序需要某种编程语言,上来就问什么怎么写是不对的。呵呵。
作者: 不得不爱     时间: 2005-10-11 11:01
写什么程序哦?
作者: JonePeng     时间: 2005-10-11 20:08
外部命令Strings可以方便得到常规内存、EMS、XMS、UMB的容量和剩余容量。这利于DOS下批处理应用。

如果是编程,那就要调用BIOS中断来处理了。
作者: killiori     时间: 2005-10-15 21:07    标题: 我来说

C本身的标准库提供了一些相关的函数,你可以调用

这里简单说一个,因为你并没右说明具体的情况,所以简单说,如果有需要
可以联系我。

_mamavl函数用来取得在进程堆数据段中可用来做动态存储分配的内存大小(以BYTE为单位)。其返回的数值并不代表相连的内存的字节个数。因此,利用_memavl所返回的值去调用malloc分配所需的内存空间并不一定成功,此时,需要使用_memmax函数,找出连续可以使用的最大值。

需要#include <malloc.h>

原型:size_t_memavl(void);

相关函数:calloc ,_freect,malloc,_memmax,realloc等

给你一个例子:
#include <graph.h>
#include <stdio.h>
#include <malloc.h>
void main()
{
void * mem_ptr;
_clearscreen(_GCLEARSCREEN);
printf("Maximum memory available %u\n",_memavl());
if(mem_ptr = malloc(sizeof(char) * 2048)){
puts("After allocated 2048 bytes...");
printf("Maximum memory available %u\n,_memavl());
}
else{
puts("Allocate memory error!");
return;
}
free(mem_ptr);
}
}
作者: killiori     时间: 2005-10-15 21:13    标题: 喉喉,忘了一些东西,补充上

你可以查询BORLAND官方网站,上面也有说明(英文)

或者可以查询《C库函数和MFC库类详解》一书
原名《Microsoft c/c++ & Visual c++》作者:程文兵 王一行 
北京航空航天大学出版社
1995年5月1版
不知道再版了没有