连接过程中出现DGROUP:group exceeds 64K消息是怎么回事?
如果在连接时看到这条出错消息,那是连接程序在指示数据(DGROUP)段中的近程数据(静态数组元素,全局变量等)超过了64KB。解决这个问题的办法有以下几种:
减少一些全局变量可能要求对程序的内部结构进行重新设计,但这是值得的。从本质上讲,全局变量的维护很可能是一场恶梦,因此只有在确实需要时才能使用全局变量。如果你分配了大量的空间作为栈空间,那么你应该试试减少栈空间,看看是否能增加可用的内存。如果你在程序中使用了大量静态数据,那么你应该想办法重新安排这些静态数据,并且为它们分配动态的而不是静态的内存。这种技术可以释放近程堆,并且使你能从远程堆中分配内存(见18.15中有关近程堆和远程堆的讨论)。
- 减少一些全局变量;
- 减少程序的栈;
- 用动态存储分配技术为数据元素分配动态内态,而不把它们定义为静态型或全局型;
- 把数据元素说明为远程型而不是近程型。
减少一些全局变量可能要求对程序的内部结构进行重新设计,但这是值得的。从本质上讲,全局变量的维护很可能是一场恶梦,因此只有在确实需要时才能使用全局变量。如果你分配了大量的空间作为栈空间,那么你应该试试减少栈空间,看看是否能增加可用的内存。如果你在程序中使用了大量静态数据,那么你应该想办法重新安排这些静态数据,并且为它们分配动态的而不是静态的内存。这种技术可以释放近程堆,并且使你能从远程堆中分配内存(见18.15中有关近程堆和远程堆的讨论)。