![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 06:37 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 一直在用dos做开发,但是无奈程序不能太大 |
| 可打印版本 1,731 / 3 |
| 第1楼 lyvv | 发表于 2009-07-30 01:16 |
| 新手上路 发帖 5 积分 16 来自 武汉 | |
|
一直在用dos做开发,但是无奈程序不能太大 一直在用dos做开发,但是无奈程序不能太大,一旦超过250k,就非常不稳定
C++代码 使用bc3.1编译 不知道为什么超过250k,就很容易死机 |
|
| 第2楼 070 | 发表于 2009-07-31 11:11 |
| 高级用户 发帖 218 积分 663 来自 福建 | |
|
可以尝试转向djgpp,应该能好用不少
|
|
| 第3楼 vcmasm | 发表于 2009-08-01 11:37 |
| 初级用户 发帖 15 积分 30 | |
|
使用 DJGPP 吧,无 640K 限制,不是 32 位代码!
著名的 ghost (DOS 版) 就是其作品!! |
|
| 第4楼 firstsail | 发表于 2009-08-02 05:29 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
DOS实模式程序虽然受640K内存限制,但也绝不是250K芝麻大小的程序运行死机归咎于BC31,应该多从自己的程序着手检查才对!
一般常见以下多种情况 (1)使用了“脏指针”或“空指针” (2)分配了内存,不再使用该内存时没有删除,导致内存泻漏! (3)在函数分配局部变量太大,造成栈溢出。BC31默认栈很小,只有4K!所以一般需要对外部局部变量_stklen指定大小。 注:如果没有特别要求,请将程序设置成“Large”内存模式! void Abc() { float fsData ;//占用8K的栈,程序肯定崩溃 //....... } 正确应该如下 #include <Dos.h> //.... unsigned int _stklen = 50u * 1024u; //指定50K的栈,不能超过64K - 1. void Abc() { float fsData ;//占用8K的栈,但栈有50K,栈不溢出 //....... } //....... int main(int argc, char** argv) { //....... } 这个问题在Windows操作系统下的Visual C++里面同样也有这个问题,对于自己开辟的线程默认的栈也只有1M字节!可看vc的AfxBeginThread()函数。 [ Last edited by firstsail on 2009-8-2 at 05:31 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |