Board logo

标题: 一直在用dos做开发,但是无奈程序不能太大 [打印本页]

作者: lyvv     时间: 2009-7-30 01:16    标题: 一直在用dos做开发,但是无奈程序不能太大

一直在用dos做开发,但是无奈程序不能太大,一旦超过250k,就非常不稳定 C++代码 使用bc3.1编译 不知道为什么超过250k,就很容易死机

作者: 070     时间: 2009-7-31 11:11
可以尝试转向djgpp,应该能好用不少

作者: vcmasm     时间: 2009-8-1 11:37
使用 DJGPP 吧,无 640K 限制,不是 32 位代码! 著名的 ghost (DOS 版) 就是其作品!!

作者: firstsail     时间: 2009-8-2 05:29
DOS实模式程序虽然受640K内存限制,但也绝不是250K芝麻大小的程序运行死机归咎于BC31,应该多从自己的程序着手检查才对! 一般常见以下多种情况 (1)使用了“脏指针”或“空指针” (2)分配了内存,不再使用该内存时没有删除,导致内存泻漏! (3)在函数分配局部变量太大,造成栈溢出。BC31默认栈很小,只有4K!所以一般需要对外部局部变量_stklen指定大小。 注:如果没有特别要求,请将程序设置成“Large”内存模式! void Abc() { float fsData[2048] ;//占用8K的栈,程序肯定崩溃 //....... } 正确应该如下 #include <Dos.h> //.... unsigned int _stklen = 50u * 1024u; //指定50K的栈,不能超过64K - 1. void Abc() { float fsData[2048] ;//占用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 ]