X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=man%2Fcurs_memleaks.3x;h=cea4165fef02b25911d373306384afc982146e53;hb=87c2c84cbd2332d6d94b12a1dcaf12ad1a51a938;hp=962a932a8ffb3f670d89c93247b75cf76596d150;hpb=71c0306f0824ef2b10c4c5813fb003db48f3012e;p=ncurses.git diff --git a/man/curs_memleaks.3x b/man/curs_memleaks.3x index 962a932a..cea4165f 100644 --- a/man/curs_memleaks.3x +++ b/man/curs_memleaks.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2008,2010 Free Software Foundation, Inc. * +.\" Copyright 2019-2021,2022 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 * @@ -26,50 +27,101 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_memleaks.3x,v 1.2 2010/07/31 16:11:27 tom Exp $ +.\" $Id: curs_memleaks.3x,v 1.15 2022/06/04 23:33:48 tom Exp $ .TH curs_memleaks 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .na .hy 0 .SH NAME -\fB_nc_freeall\fP -\fB_nc_free_and_exit\fP \- \fBcurses\fR memory-leak checking +\fBexit_curses\fP, +\fBexit_terminfo\fP \- \fBcurses\fP memory-leak checking .ad .hy .SH SYNOPSIS -\fB#include \fR +\fB#include \fP +.br +\fBvoid exit_curses(int \fIcode\fB);\fR +.sp +\fB#include \fP +.br +\fBvoid exit_terminfo(int \fIcode\fB);\fR .sp -\fBvoid _nc_freeall(void);\fR +/* deprecated (intentionally not declared in curses.h or term.h) */ .br -\fBvoid _nc_free_and_exit(int);\fR +\fBvoid _nc_freeall(void);\fP +.br +\fBvoid _nc_free_and_exit(int \fIcode\fB);\fR +.br +\fBvoid _nc_free_tinfo(int \fIcode\fB);\fR .SH DESCRIPTION These functions are used to simplify analysis of memory leaks in the ncurses library. -They 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 Any implementation of curses must not free the memory associated with -a screen, since (even after calling \fBendwin\fP), it must be available -for use in the next call to \fBrefresh\fP. +a screen, since (even after calling \fBendwin\fP(3X)), it must be available +for use in the next call to \fBrefresh\fP(3X). There are also chunks of memory held for performance reasons. That makes it hard to analyze curses applications for memory leaks. -To work around this, one can build a debugging version of the ncurses -library which frees those chunks which it can, and provides these -functions to free all of the memory allocated by the ncurses library. +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. +.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 ncurses. +.TP 5 +\fB_nc_free_and_exit\fP +This frees the memory allocated by ncurses (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 \fP_nc_free_and_exit\fP function is the preferred one since -some of the memory which is freed may be required for the application -to continue running. -Its parameter is the code to pass to the \fPexit\fP routine. +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 \fBexit_curses\fP and \fBexit_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 the XSI interface. +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 \fBexit_curses\fP can be freed using \fBdelscreen\fP, +passing the \fBSCREEN*\fP pointer returned by \fBnewterm\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 \fBinitscr\fP. +.bP +The portable part of \fBexit_terminfo\fP can be freed using \fBdel_curterm\fP. +.IP +In this case, there is a global variable \fBcur_term\fP which can be +used as parameter. .SH SEE ALSO -\fBcurses\fR(3X). -.\"# -.\"# The following sets edit modes for GNU EMACS -.\"# Local Variables: -.\"# mode:nroff -.\"# fill-column:79 -.\"# End: +\fBcurs_initscr\fP(3X), +\fBcurs_terminfo\fP(3X). +\fBcurses\fP(3X).