mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 21:05:08 +00:00
132 lines
5.6 KiB
Plaintext
132 lines
5.6 KiB
Plaintext
.\"***************************************************************************
|
|
.\" Copyright 2019-2023,2024 Thomas E. Dickey *
|
|
.\" Copyright 2008-2010,2017 Free Software Foundation, Inc. *
|
|
.\" *
|
|
.\" Permission is hereby granted, free of charge, to any person obtaining a *
|
|
.\" copy of this software and associated documentation files (the *
|
|
.\" "Software"), to deal in the Software without restriction, including *
|
|
.\" without limitation the rights to use, copy, modify, merge, publish, *
|
|
.\" distribute, distribute with modifications, sublicense, and/or sell *
|
|
.\" copies of the Software, and to permit persons to whom the Software is *
|
|
.\" furnished to do so, subject to the following conditions: *
|
|
.\" *
|
|
.\" The above copyright notice and this permission notice shall be included *
|
|
.\" in all copies or substantial portions of the Software. *
|
|
.\" *
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
|
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
|
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
|
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
|
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
|
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
|
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
.\" *
|
|
.\" Except as contained in this notice, the name(s) of the above copyright *
|
|
.\" holders shall not be used in advertising or otherwise to promote the *
|
|
.\" sale, use or other dealings in this Software without prior written *
|
|
.\" authorization. *
|
|
.\"***************************************************************************
|
|
.\"
|
|
.\" $Id: curs_memleaks.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
|
|
.TH curs_memleaks 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
|
|
.ie \n(.g \{\
|
|
.ds `` \(lq
|
|
.ds '' \(rq
|
|
.\}
|
|
.el \{\
|
|
.ie t .ds `` ``
|
|
.el .ds `` ""
|
|
.ie t .ds '' ''
|
|
.el .ds '' ""
|
|
.\}
|
|
.
|
|
.de bP
|
|
.ie n .IP \(bu 4
|
|
.el .IP \(bu 2
|
|
..
|
|
.SH NAME
|
|
\fB\%exit_curses\fP,
|
|
\fB\%exit_terminfo\fP \-
|
|
check for memory leaks in \fIcurses\fR
|
|
.SH SYNOPSIS
|
|
.nf
|
|
\fB#include <curses.h>
|
|
\fBvoid exit_curses(int \fIcode\fP);
|
|
.PP
|
|
\fB#include <term.h>
|
|
\fBvoid exit_terminfo(int \fIcode\fP);
|
|
.PP
|
|
\fI/* deprecated (intentionally not declared in curses.h or term.h) */
|
|
\fBvoid _nc_freeall(void);
|
|
\fBvoid _nc_free_and_exit(int \fIcode\fP);
|
|
\fBvoid _nc_free_tinfo(int \fIcode\fP);
|
|
.fi
|
|
.SH DESCRIPTION
|
|
These functions are used to simplify analysis of memory leaks in the
|
|
\fI\%ncurses\fP library.
|
|
.PP
|
|
Any implementation of curses must not free the memory associated with
|
|
a screen, since (even after calling \fB\%endwin\fP(3X)), it must be available
|
|
for use in the next call to \fB\%refresh\fP(3X).
|
|
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
|
|
\fI\%ncurses\fP library,
|
|
applications can call functions which free those chunks of memory,
|
|
simplifying the process of memory-leak checking.
|
|
.PP
|
|
Some of the functions are named with a \*(``_nc_\*('' prefix
|
|
because they are not intended for use in the non-debugging library:
|
|
.TP 5
|
|
\fB\%_nc_freeall\fP
|
|
This frees (almost) all of the memory allocated by \fI\%ncurses\fP.
|
|
.TP 5
|
|
\fB\%_nc_free_and_exit\fP
|
|
This frees the memory allocated by \fI\%ncurses\fP
|
|
(like \fB\%_nc_freeall\fP),
|
|
and exits the program.
|
|
It is preferred over \fB\%_nc_freeall\fP since some of that memory
|
|
may be required to keep the application running.
|
|
Simply exiting (with the given exit-code) is safer.
|
|
.TP 5
|
|
\fB\%_nc_free_tinfo\fP
|
|
Use this function if only the low-level terminfo functions (and
|
|
corresponding library) are used.
|
|
Like \fB\%_nc_free_and_exit\fP, it exits the program after freeing memory.
|
|
.PP
|
|
The functions prefixed \*(``_nc\*('' are normally not available;
|
|
they must be configured into the library
|
|
at build time using the \fB\%\-\-disable-leaks\fP option.
|
|
That compiles-in code that frees memory that normally would not be freed.
|
|
.PP
|
|
The \fB\%exit_curses\fP and \fB\%exit_terminfo\fP functions
|
|
call \fB\%_nc_free_and_exit\fP and \fB\%_nc_free_tinfo\fP if
|
|
the library is configured to support memory-leak checking.
|
|
If the library is not configured to support memory-leak checking,
|
|
they simply call \fBexit\fP.
|
|
.SH RETURN VALUE
|
|
These functions do not return a value.
|
|
.SH PORTABILITY
|
|
These functions are not part of X/Open Curses;
|
|
nor do other implementations of curses provide a similar feature.
|
|
.PP
|
|
In any implementation of X/Open Curses, an application can free part
|
|
of the memory allocated by curses:
|
|
.bP
|
|
The portable part of \fB\%exit_curses\fP can be freed using \fB\%delscreen\fP,
|
|
passing the \fISCREEN\fP pointer returned by \fB\%newterm\fP.
|
|
.IP
|
|
In some implementations, there is a global variable \fBsp\fP
|
|
which could be used, e.g., if the screen were only initialized
|
|
using \fB\%initscr\fP.
|
|
.bP
|
|
The portable part of \fB\%exit_terminfo\fP can be freed
|
|
using \fB\%del_curterm\fP.
|
|
.IP
|
|
In this case, there is a global variable \fB\%cur_term\fP which can be
|
|
used as parameter.
|
|
.SH SEE ALSO
|
|
\fB\%curses\fP(3X),
|
|
\fB\%curs_initscr\fP(3X),
|
|
\fB\%curs_terminfo\fP(3X)
|