0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

TC2.0编译下,数组过大问题

查了好多方法,都提示说TC2.0下不能大于64K,我又下载了TC3.0而编译时还是提示数组过大。我现在就是想用一个大的数组,难不成非要使用DJGPP?
各位谁用过这个?
我也只是想定义这个大数组,
double arr[865536];
在DOS下编程的伤不起啊。
提问者:60user180 地点:- 浏览次数:6638 提问时间:05-18 09:26
我有更好的答案
提 交
13条回答
60user137 05-20 09:28
http://topic.csdn.net/u/20080121/12/d948c848-8d25-433e-94f0-24912519f30e.html

http://topic.csdn.net/t/20020702/19/844896.html
wyerywsfsf 05-26 08:15
DOS 下就别指望了, 这是硬件的限制导致编译器作出了限制。 要么用 vc, bc, 要么使用分段。
leopard530 05-22 03:27
也考虑过不过VC和BC不支持interrupt关键字啊。
是在DOS下运行的程序,想使用串口接收中断。
我试下DJGPP看看怎么用。
骑猪去天山 05-25 07:10
就串口那龟爬速度……如果只是为了用interrupt来处理串口,用VC,随便下载个基于对话框的串口助手程序,在上面改改用吧
爱雪爱雪 05-26 19:03
我用的PC\104装的是DOS6.22,现在需要用DOS下程序。。。。。。
香港快捷电路科技有限公司 05-24 15:22
VC可以编写中断服务程序的。其实这个不是由VC来实现,是WINDOWS本身已经实现的。
sagsdc 05-18 16:52
windows的串口本身就是基于中断服务程序实现的,你在windows下的查询,是查串口缓冲的数据,不影响串口的响应。
60user94 05-18 12:08
倒是你可以TC写的代码运行在保护模式下,这时内存就不用限制在64k了,缺点是内存管理得自己来做。
也可以使用DPMI编程。
想再看钻石冰尘 05-25 11:29
需要帮助啊。。。。。。
khgsf 05-19 22:23
为什么不用win32/linux平台,而非要DOS平台。dos运行在保护模式,就是裸奔!代价高昂。
cdkjwdjqw 05-23 22:33
开始定方案的时候,也注意到了TC是16位的问题,现在才发现挺难解决的。
iettke 05-18 11:35
还在纠结这个问题?

DOS使用了实地址模式, 索引寄存器是 16 bit, 所以数组访问一般不会超过 64 K, 除非编译器降低效率特别处理, 基本上没有编译器会这么干, 因为程序员总是有方法不使用大数组。 你可以使用farmalloc() 分配一个大堆, 然后使用 far 指针处理。 far 指针(segment:offset)可以访问任何内存地址。
  
另外, Borland C++ 支持interrupt.
like谢雨 05-20 08:54
即使是VC或者C++Builder,都不建议使用大数组
撰写答案
提 交
1 / 3
1 / 3