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

# menu\_new(3menu)

create and destroy menu items

## NAME

**new\_item**, **free\_item** - create and destroy menu items

## SYNOPSIS

```
#include <menu.h>
```

**ITEM \*new\_item(const char \****name***, const char \****description***);** **int free\_item(ITEM \****item***);**

## DESCRIPTION

**The function new\_item allocates a new item and initializes it from the** **name and description pointers.** **Please notice that the item stores** **only the pointers to the name and description.** **Those pointers must be valid** **during the lifetime of the item.** **So you should be very careful with names** **or descriptions allocated on the stack of some routines.**\
 **The function free\_item de-allocates an item.** **Please notice that it** **is the responsibility of the application to release the memory for the** **name or the description of the item.**

## RETURN VALUE

**The function new\_item returns** *NULL* **on error.** **It sets errno according to the function's failure:**

- **E\_BAD\_ARGUMENT**

  **Routine detected an incorrect or out-of-range argument.**

- **E\_SYSTEM\_ERROR**

  **System error occurred, e.g., malloc failure.**

**The function free\_item returns one of the following:**

- **E\_OK**

  **The routine succeeded.**

- **E\_BAD\_ARGUMENT**

  **Routine detected an incorrect or out-of-range argument.**

- **E\_CONNECTED**

  **Item is connected to a menu.**

- **E\_SYSTEM\_ERROR**

  **System error occurred (see [errno(3)](/errno/3.md)).**

## PORTABILITY

**These routines emulate the System V menu library.** **They were not supported on** **Version 7 or BSD versions.**

## AUTHORS

**Juergen Pfeifer.** **Manual pages and adaptation for new curses by Eric S. Raymond.**

## SEE ALSO

**ncurses(3NCURSES),** **menu(3MENU)**
