---
name: "memleaks"
section: "3ncurses"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/memleaks"
---

# memleaks(3ncurses)

check for memory leaks in curses

## NAME

**exit\_curses**, **exit\_terminfo** - check for memory leaks in *curses*

## SYNOPSIS

```
#include <curses.h>
void exit_curses(int code);
```

**#include \<term.h\>** **void exit\_terminfo(int** *code***);**

*/\* deprecated (intentionally not declared in curses.h or term.h) \*/* **void \_nc\_freeall(void);** **void \_nc\_free\_and\_exit(int** *code***);** **void \_nc\_free\_tinfo(int** *code***);**

## DESCRIPTION

**These functions are used to simplify analysis of memory leaks in the** *ncurses* **library.**

**Any implementation of curses must not free the memory associated with** **a screen, since (even after calling endwin(3NCURSES)), it must be available** **for use in the next call to refresh(3NCURSES).** **There are also chunks of memory held for performance reasons.** **That makes it hard to analyze curses applications for memory leaks.** **When using the specially configured debugging version of the** *ncurses* **library,** **applications can call functions which free those chunks of memory,** **simplifying the process of memory-leak checking.**

**Some of the functions are named with a “\_nc\_” prefix** **because they are not intended for use in the non-debugging library:**

- **\_nc\_freeall**

  **This frees (almost) all of the memory allocated by** *ncurses***.**

- **\_nc\_free\_and\_exit**

  **This frees the memory allocated by** *ncurses* **(like \_nc\_freeall),** **and exits the program.** **It is preferred over \_nc\_freeall since some of that memory** **may be required to keep the application running.** **Simply exiting (with the given exit-code) is safer.**

- **\_nc\_free\_tinfo**

  **Use this function if only the low-level terminfo functions (and** **corresponding library) are used.** **Like \_nc\_free\_and\_exit, it exits the program after freeing memory.**

**The functions prefixed “\_nc” are normally not available;** **they must be configured into the library** **at build time using the --disable-leaks option.** **That compiles-in code that frees memory that normally would not be freed.**

**The exit\_curses and exit\_terminfo functions** **call \_nc\_free\_and\_exit and \_nc\_free\_tinfo if** **the library is configured to support memory-leak checking.** **If the library is not configured to support memory-leak checking,** **they simply call exit.**

## RETURN VALUE

**These functions do not return a value.**

## PORTABILITY

**These functions are not part of X/Open Curses;** **nor do other implementations of curses provide a similar feature.**

**In any implementation of X/Open Curses, an application can free part** **of the memory allocated by curses:**

- •

  **The portable part of exit\_curses can be freed using delscreen,** **passing the** *SCREEN* **pointer returned by newterm.**

-

  **In some implementations, there is a global variable sp** **which could be used, e.g., if the screen were only initialized** **using initscr.**

- •

  **The portable part of exit\_terminfo can be freed** **using del\_curterm.**

-

  **In this case, there is a global variable cur\_term which can be** **used as parameter.**

## SEE ALSO

**ncurses(3NCURSES),** **initscr(3NCURSES),** **terminfo(3NCURSES)**
