[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Part1 - Part2 - Part3 - Part4 - Part5 - Single Page
Top Document: comp.os.msdos.programmer FAQ part 2/5
Previous Document: Section 3. Compile and link
Next Document: - How do I fix 'automatic data segment exceeds 64K' or 'stack plus data exceed 64K'?
-
Search the FAQ Archives
Part1 - Part2 - Part3 - Part4 - Part5 - Single Page
Top Document: comp.os.msdos.programmer FAQ part 2/5
Previous Document: Section 3. Compile and link
Next Document:
- What the heck is DGROUP > 64K?
This question explains the problem; the next question gives some remedies. DGROUP is a link-time group of data segments, and the compiler typically generates code that expects DS to be pointing to DGROUP. (Exception: Borland's huge model has no DGROUP.) Here's what goes into DGROUP: * Tiny models (all pointers near): DGROUP holds the entire program. * Small and medium models (data pointers near): DGROUP holds all globals and static variables including string literal data, plus the stack and the heap. * Large, compact, and huge models in Microsoft (data pointers far): DGROUP holds only initialized globals and static variables including string literal data, plus the stack and the near heap. * Large and compact models in Borland (data pointers far): DGROUP holds initialized and uninitialized globals and static variables including string literal data, but not the stack or heap. * Huge model in Borland (data pointers far): there is no DGROUP, so the 64K limit doesn't apply. In all of the above, which is to say all six models in Microsoft C and all but huge in Borland C, DGROUP is limited to 64K including string literal data (which are treated as static data). This limitation is due to the Intel CPU's segmented architecture. For more information, see topics like "memory models" and "memory management" in the index of your compiler manual. Also for an extended general discussion of memory usage in Borland C programs, of which much applies to any C compiler in DOS see TI738.asc, downloadable as part of: <ftp://garbo.uwasa.fi/pc/c-lang/bchelp10.zip>
Top Document: comp.os.msdos.programmer FAQ part 2/5
Previous Document: Section 3. Compile and link
Next Document:
Part1 - Part2 - Part3 - Part4 - Part5 - Single Page
[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Send corrections/additions to the FAQ Maintainer:
jeffrey@carlyle.org (Jeffrey Carlyle)
Last Update October 22 2009 @ 05:28 AM