ID Number: Q48840
5.10 | 5.10
MS-DOS | OS/2
buglist5.10 fixlist6.00
Summary:
When linking with the VARSTCK.OBJ module from C version 5.10 to allow
for a variable stack, the fatal error "L2044: symbol multiply defined,
use /NOE" occurs. The following three functions are multiply defined:
__nfree
__asegds
__nmalloc
To work around this error, you must use the library manager, LIB.EXE,
to replace the functions multiply defined from nmalloc.asm in the
standard library with the functions in (S,M,C,L)VARSTCK.OBJ.
The following is an example for small memory model using math
emulation:
COPY slibce.lib slibce.old <ENTER>
LIB slibce.lib -nmalloc+svarstck; <ENTER>
More Information:
When the heap runs out of memory, it tries to use available stack
space until it runs into the top of the stack. When the allocated
space in the stack is freed, it is available once again to the stack.
Note that while the heap can employ unused stack space, the reverse is
not true; the stack CANNOT employ unused heap space. (See the
"Microsoft C 5.1 User's Guide," page 105.)
If you use the /NOE switch on the link line as the error message
suggests, you will receive another fatal error "L2025: symbol defined
more than once." You must use the library manager LIB.EXE to replace
the functions that are multiply defined in order to clear these fatal
errors.
Microsoft has confirmed this to be a problem in C version 5.10. This
problem was corrected in C version 6.00.