标题:[求助]如何用farmalloc申请比较大的空间
只看楼主
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
 问题点数:0 回复次数:7 
[求助]如何用farmalloc申请比较大的空间
我在程序中写到
unsigned char far *image;
image = (unsigned char far *)farmalloc(64000L);
但是结果image的值却是NULL
我的程序中并没有用掉很多空间啊,望达人指点,感激涕淋。
搜索更多相关主题的帖子: farmalloc 空间 image char unsigned 
2006-06-16 20:59
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
得分:0 
64000已经是64K了,DOS实模式下不是每次能申请到这么多的
2006-06-16 21:38
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
我试了32000也不成功,64K应该是64*1024吧,64000好象还没有到诶.....
那如何才能声请足够大的空间呢?我想用来存放位图
2006-06-16 23:41
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
得分:0 
是吗?32K应该能申请的到才是,要不你将编译模式改成大模式或紧凑模式,然后直接用malloc()试试。
不过即使你申请到了也存放不了多大的位图,64K才存一张320X240的256色位图,而且实模式下只有640KB可用,还有其它系统或TSR程序想分一杯羹,总之一句话:捉襟见肘。
2006-06-17 21:15
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
那怎样才能实现存放大位图呢?
TC能工作在保护模式下吗?
2006-06-17 22:21
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
得分:0 
TC进保护模式比较麻烦。如果肯换的话,DJGPP是个不错的选择,WATCOM C++也不错。
如果不想换编译环境的话,可以使用扩展、扩充内存规范。
2006-06-18 12:58
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
/*
申请远堆资源,建立巨型动态数组之例
编译连接命令:tcc -mh thisfile.c <回车>
*/
#include<stdio.h>
#include<stdlib.h>
void main()
{
char huge*s;
unsigned long NUM,f;
f=farcoreleft();
printf("far heap: %lu bytes free\n",f);
printf("欲申请的字节数NUM=");
scanf("%lu",&NUM);
if((s=farmalloc(NUM))==NULL){
printf("远堆空闲内存不足...\n");abort();}
else /*申请成功*/
{
printf("请使用*(s+i)以取代s[i]");/*对于TC2.0至关重要*/
/*
此处是你使用巨型动态数组s[ ]的地方
*/
farfree((void far*)s);
}
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-18 16:30
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
谢谢斑竹的建议,我去下个DJGPP看看。
楼上的兄弟的方法我也尝试了,结果编译连接之后的exe运行有错误......可能是我哪里做错了吧
2006-06-18 19:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-72828-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.742985 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved