www.digitalmars.com [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(): 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.