ncurses 6.2 - patch 20210619
[ncurses.git] / doc / html / man / curs_memleaks.3x.html
1 <!--
2   ****************************************************************************
3   * Copyright 2019-2020,2021 Thomas E. Dickey                                *
4   * Copyright 2008-2010,2017 Free Software Foundation, Inc.                  *
5   *                                                                          *
6   * Permission is hereby granted, free of charge, to any person obtaining a  *
7   * copy of this software and associated documentation files (the            *
8   * "Software"), to deal in the Software without restriction, including      *
9   * without limitation the rights to use, copy, modify, merge, publish,      *
10   * distribute, distribute with modifications, sublicense, and/or sell       *
11   * copies of the Software, and to permit persons to whom the Software is    *
12   * furnished to do so, subject to the following conditions:                 *
13   *                                                                          *
14   * The above copyright notice and this permission notice shall be included  *
15   * in all copies or substantial portions of the Software.                   *
16   *                                                                          *
17   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
18   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
19   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
20   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
21   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
22   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
23   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
24   *                                                                          *
25   * Except as contained in this notice, the name(s) of the above copyright   *
26   * holders shall not be used in advertising or otherwise to promote the     *
27   * sale, use or other dealings in this Software without prior written       *
28   * authorization.                                                           *
29   ****************************************************************************
30   * @Id: curs_memleaks.3x,v 1.11 2021/01/02 23:47:51 tom Exp @
31 -->
32 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
33 <HTML>
34 <HEAD>
35 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
36 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
37 <TITLE>curs_memleaks 3X</TITLE>
38 <link rel="author" href="mailto:bug-ncurses@gnu.org">
39 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
40 </HEAD>
41 <BODY>
42 <H1 class="no-header">curs_memleaks 3X</H1>
43 <PRE>
44 <B><A HREF="curs_memleaks.3X.html">curs_memleaks(3X)</A></B>                                            <B><A HREF="curs_memleaks.3X.html">curs_memleaks(3X)</A></B>
45
46
47
48
49 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
50        <B>exit_curses</B>, <B>exit_terminfo</B> - <B>curses</B> memory-leak checking
51
52
53 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
54        <B>#include</B> <B>&lt;curses.h&gt;</B>
55        <B>void</B> <B>exit_curses(int</B> <I>code</I><B>);</B>
56
57        <B>#include</B> <B>&lt;term.h&gt;</B>
58        <B>void</B> <B>exit_terminfo(int</B> <I>code</I><B>);</B>
59
60        /* deprecated (intentionally not declared in curses.h or term.h) */
61        <B>void</B> <B>_nc_freeall(void);</B>
62        <B>void</B> <B>_nc_free_and_exit(int</B> <I>code</I><B>);</B>
63        <B>void</B> <B>_nc_free_tinfo(int</B> <I>code</I><B>);</B>
64
65
66 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
67        These  functions  are  used to simplify analysis of memory leaks in the
68        ncurses library.
69
70        Any implementation of curses must not free the memory associated with a
71        screen, since (even after calling <B><A HREF="curs_initscr.3X.html">endwin(3X)</A></B>), it must be available for
72        use in the next call to <B><A HREF="curs_refresh.3X.html">refresh(3X)</A></B>.  There are also chunks  of  memory
73        held for performance reasons.  That makes it hard to analyze curses ap-
74        plications for memory leaks.  When using the specially  configured  de-
75        bugging version of the ncurses library, applications can call functions
76        which free those chunks of memory, simplifying the process  of  memory-
77        leak checking.
78
79        Some  of  the functions are named with a "_nc_" prefix because they are
80        not intended for use in the non-debugging library:
81
82        <B>_nc_freeall</B>
83             This frees (almost) all of the memory allocated by ncurses.
84
85        <B>_nc_free_and_exit</B>
86             This frees the memory allocated by ncurses (like <B>_nc_freeall</B>), and
87             exits the program.  It is preferred over <B>_nc_freeall</B> since some of
88             that memory may be required to keep the application running.  Sim-
89             ply exiting (with the given exit-code) is safer.
90
91        <B>_nc_free_tinfo</B>
92             Use  this  function  if only the low-level terminfo functions (and
93             corresponding library) are used.  Like <B>_nc_free_and_exit</B>, it exits
94             the program after freeing memory.
95
96        The  functions  prefixed "_nc" are normally not available; they must be
97        configured into the library at build time using the <B>--disable-leaks</B> op-
98        tion.   That compiles-in code that frees memory that normally would not
99        be freed.
100
101        The <B>exit_curses</B> and <B>exit_terminfo</B> functions call <B>_nc_free_and_exit</B>  and
102        <B>_nc_free_tinfo</B>  if  the  library  is  configured to support memory-leak
103        checking.  If the library is  not  configured  to  support  memory-leak
104        checking, they simply call <B>exit</B>.
105
106
107 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
108        These functions do not return a value.
109
110
111 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
112        These functions are not part of X/Open Curses; nor do other implementa-
113        tions of curses provide a similar feature.
114
115
116 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
117        <B><A HREF="curses.3X.html">curses(3X)</A></B>.
118
119
120
121                                                              <B><A HREF="curs_memleaks.3X.html">curs_memleaks(3X)</A></B>
122 </PRE>
123 <div class="nav">
124 <ul>
125 <li><a href="#h2-NAME">NAME</a></li>
126 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
127 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
128 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
129 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
130 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
131 </ul>
132 </div>
133 </BODY>
134 </HTML>