中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-10-31 18:58
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行
DOS开发编程 & 发展交流 (开发室) » 急啊,DOS怎要得到可用内存啊?像mem那样
可打印版本  1,284 / 7
第1楼 abcc 发表于 2005-10-10 20:50
新手上路 发帖 2 积分 5
急啊,DOS怎要得到可用内存啊?像mem那样
急啊,DOS怎要得到可用内存啊?像mem那样
第2楼 Michael 发表于 2005-10-10 21:24
钻石会员 发帖 3,041 积分 10,056
mem
第3楼 abcc 发表于 2005-10-10 21:33
新手上路 发帖 2 积分 5
我是问写程序哦,mem连傻根都知道
第4楼 Michael 发表于 2005-10-10 22:00
钻石会员 发帖 3,041 积分 10,056
傻根儿还知道写程序需要某种编程语言,上来就问什么怎么写是不对的。呵呵。
第5楼 不得不爱 发表于 2005-10-11 11:01
超级版主 发帖 2,044 积分 5,310 来自 四川南充
写什么程序哦?
第6楼 JonePeng 发表于 2005-10-11 20:08
金牌会员 发帖 1,883 积分 4,562 来自 广东广州
外部命令Strings可以方便得到常规内存、EMS、XMS、UMB的容量和剩余容量。这利于DOS下批处理应用。

如果是编程,那就要调用BIOS中断来处理了。
第7楼 killiori 发表于 2005-10-15 21:07
新手上路 发帖 15 积分 15 来自 湖北襄樊
我来说
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);
}
}
第8楼 killiori 发表于 2005-10-15 21:13
新手上路 发帖 15 积分 15 来自 湖北襄樊
喉喉,忘了一些东西,补充上
你可以查询BORLAND官方网站,上面也有说明(英文)

或者可以查询《C库函数和MFC库类详解》一书
原名《Microsoft c/c++ & Visual c++》作者:程文兵 王一行 
北京航空航天大学出版社
1995年5月1版
不知道再版了没有
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023