ID Number: Q46741
5.10 6.00 6.00a 6.00ax 7.00
MS-DOS
Summary:
In Microsoft C versions 5.0, 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version
7.0, the stream level I/O routines inherit their speed and flexibility
from the buffering system they use. Upon opening a file with the
fopen() function, a file record is created that contains pointers into
a stream buffer. This buffer is then allocated (malloc-ed) when the
first I/O operation is performed. If there is not enough room in the
heap for this buffer allocation, the file operation continues with a
buffer size of one character.
A stream I/O routine that takes an excessive amount of time is
probably the result of a failure to allocate the 512-byte buffer on
the heap (near or far, depending on the memory model). Without this
buffer, the I/O routines are extremely slow, requiring disk access for
all I/O operations.
To work around this problem, do one of two things.
- Reduce the amount of allocation on the heap.
-or-
- Change memory models to compact or large (if you are in small or
medium). If you change memory models, you may need to use the /Gt
switch to push static data out of DGROUP.
Additional reference words: 5.10 6.00 6.00a 6.00ax 7.00