![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 00:41 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » DOS下程序的内存占用要怎么看啊? |
| 可打印版本 1,968 / 1 |
| 第1楼 yysn | 发表于 2010-11-15 14:49 |
| 初级用户 发帖 26 积分 65 | |
|
DOS下程序的内存占用要怎么看啊? mem命令可以查看正在运行的程序的占用内存大小。
所以,本人写了一个小程序,想测试一下看看,然后发现了一个问题。 先贴上代码: #include <stdio.h> #include <stdlib.h> #include <alloc.h> int main(int argc,char *argv[]) { FILE *fp; char buf[64]; fp = fopen("coreleft.txt", "a+b"); if(NULL != fp) { fprintf(fp, "coreleft = %lu byte\n", (unsigned long)coreleft()); fflush(fp); fclose(fp); } if(argc>1) { sprintf(buf, "mem /M %s > mem-m.txt", argv[1]); system(buf); } system("mem /C > mem-c.txt"); system("mem /D > mem-d.txt"); return 0; } 然后在DOS命令行下运行 memtest memtest ,此时会生成3个文件。 很诧异的是,就这么一个小程序,居然占用内存达到了72K Modules using memory below 1Mb: Name Total = Conventional + Upper Memory -------- ---------------- ---------------- ---------------- SYSTEM 29,296 (29K) 29,232 (29K) 64 (0K) SETVER 784 (1K) 784 (1K) 0 (0K) HIMEM 768 (1K) 768 (1K) 0 (0K) EMM386 3,392 (3K) 3,392 (3K) 0 (0K) COMMAND 2,656 (3K) 2,656 (3K) 0 (0K) MEMTEST 128 (0K) 128 (0K) 0 (0K) MEMTEST 73,680 (72K) 73,680 (72K) 0 (0K) ETHDRV 53,120 (52K) 53,120 (52K) 0 (0K) COMMAND 2,816 (3K) 2,816 (3K) 0 (0K) PROTMAN 112 (0K) 0 (0K) 112 (0K) DC21X4 42,432 (41K) 0 (0K) 42,432 (41K) DIS_PKT 3,504 (3K) 0 (0K) 3,504 (3K) ETHDRV 22,112 (22K) 0 (0K) 22,112 (22K) FREE 503,856 (492K) 488,768 (477K) 15,088 (15K) 不知道怎么回事? 代码查看附件 附件 检测内存.rar (10.44 KiB) |
|
| 第2楼 netwinxp | 发表于 2010-11-26 07:56 |
| 高级用户 发帖 366 积分 741 | |
|
因为该程序调用了新的command.com进程来执行mem命令.建议用INT 21H AH=4BH来直接执行mem.exe
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |