[Home]
[Search]
[Contents]
Warnings and Associated Numbers
These numbers are used with the -wnumber command line
switch to SC.
1 function 'identifier' is too complicated to inline
2 possible unintended assignment
3 comments do not nest
4 assignment to 'this' is obsolete, use X::operator new/delete
5 no tag name for struct or enum
6 value of expression is not used
7 possible extraneous ';'
8 very large automatic
9 use delete[] rather than delete[expr], expr ignored
10 using operator++() (or --) instead of missing operator++(int)
11 non-const reference initialized to temporary
12 variable 'identifier' used before set
13 Illegal type/size of operands for the %s instruction
14 Reference to 'identifier' caused a 386 instruction to be generated
15 returning address of automatic 'identifier'
16 DS is not equal to DGROUP
17 unrecognized pragma
18 implied return at closing '}' does not return value
19 number actual arguments expected for identifier, had number
20 symbols or macros defined before #include of precompiled header
21 precompiled header must be first #include when -H is used
22 different configuration for precompiled header
23 divide by 0
Run-Time Error Messages
These run-time error messages are generated
by Digital Mars's C/C++ run-time library code.
These messages occur while the program is running.
16 bit code is too large
DOSX. DOSX adds some code to the 16-bit code
segment above
what the linker adds at link time. Because of this, the 16-bit code
segment has exceeded 64K bytes. This can happen only if large
amounts of user supplied 16-bit code are linked into the application.
Bad stack size parameter
The =nnnn command line parameter to set the run-time stack size is
not valid.
Cannot enable the A20 line, XMS memory manager required
DOSX. No XMS, VCPI or DPMI host is present; DOSX was attempting
to enable the A20 line without the help of a host and has failed. This
indicates that the computer has nonstandard A20 enabling hardware.
Install an XMS memory manager such as Microsoft
himem.sys, which may be compatible with the computer in
question. Alternatively, install a compatible DPMI or VCPI host. It
may be difficult to find XMS, VCPI or DPMI hosts that are compatible
with the machine if DOSX fails.
DPMI failed to enter protected mode DOSX.
DOSX has requested the DPMI host to switch the processor to
protected mode, the DPMI host failed the function call. This message
usually indicates that the host has been corrupted. Rebooting the
machine will usually fix the problem.
DPMI operating system error DOSX.
Any fatal failure of the DPMI host other than a failure to enter
protected mode will generate this message. This message usually
indicates that the host has been corrupted. Rebooting the machine
will usually fix the problem.
DOS 1.xx not supported
Use MS-DOS version 2.11 or later.
Fatal error reading disk DOSX.
DOSX was unable to read its own executable file from disk.
Floating point not loaded
The program attempts to perform floating point operations, but the
floating point run-time system is not linked. Run OBJ2ASM on the
object file to ensure that the external reference _fltused was
generated. Otherwise, remove the floating point operation.
Heap is corrupted
The following are possible causes of this message, which is
generated by the library function free():
- Passing free() a pointer that malloc(), calloc(),
or realloc() does not generate
- Freeing the same pointer twice
- Trashing the heap's data structures with a wild pointer
If writing C code, use the MEM package to track down the
error.
If using C++ code, look for a class with a
member that is a dynamically allocated pointer to something. If you
assign an instance of that class to another variable and there is no
copy constructor, the compiler generates a memberwise copy,
resulting in two instances containing the same pointer. Destructing
both results in freeing the same point twice. For example, the
following code can generate the "Heap is corrupted" message:
#include <stdlib.h>
#include <string.h>
struct X
{
char *p;
X(char *s)
{
p = strdup(s);
}
~X()
{
free(p);
}
};
void main()
{
X x("hello");
X y = x; // invoke copy constructor
x = y; // invoke X::operator=(X&)
} // Both copies are automatically
// destructed at the end of the
// program and cause a crash.
To fix the code, add these member functions to X:
X(X& x)
{
p = strdup(x.p);
}
X& operator=(X& x)
{
free(p);
p = strdup(x.p);
return *this;
}
Insufficient conventional memory to run program DOSX.
There is insufficient conventional memory for the 16-bit code,
data, stack and required DOSX data structures. DOSX programs
normally require a minimum of about 35 kbytes of conventional
memory.
Insufficient extended memory to run program DOSX.
There is insufficient extended memory for the 32-bit code,
data, stack and required DOSX data structures.
Max of 32 args allowed
The maximum number of command line parameters permitted when
running a program is 32.
Not enough memory
Not enough memory is available to run the program. Remove
memory-resident programs.
NULL function pointer
The program encounters an uninitialized function pointer.
Pointer check fault
You tried to de-reference an invalid pointer in a 16-bit DOS
program, and pointer checking is turned on.
Semaphore error
There was an unexpected error on an internal library semaphore.
Stack Overflow
The stack of the running program grows until it meets the heap, or
vice versa, and now they overlap. Allocate more memory for the
stacks. This message occurs only when the program is compiled with
the Stack Overflow Checking (-s) option, or the function
_chkstack is called. For more information, see
Compiling Code.
Thread error
The run-time thread handling routines ran out of memory, or
exceeded some other system limit.
Wrong Win32s version, or damaged installation.
This application requires Win32s version 1.15 to be loaded on your system.
Win32s applications built with Digital Mars C++ require Version 1.15 or
above of Win32s. This message appears in a message box.