Last update Sun Mar 4 11:58:08 2018

Runtime 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() {

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) {
  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.
Home | Runtime Library | IDDE Reference | STL | Search | Download | Forums