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

# new(3form)

create and destroy forms

## NAME

**new\_form**, **free\_form** - create and destroy forms

## SYNOPSIS

```
#include <form.h>
```

**FORM \*new\_form(FIELD \*\****fields***);** **int free\_form(FORM \****form***);**

## DESCRIPTION

**The function new\_form creates a new form connected to a specified field** **pointer array (which must be** *NULL*-terminated).

**The function free\_form disconnects** *form* **from its field array** **and frees the storage allocated for the form.**

## RETURN VALUE

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

- **E\_OK**

  **The routine succeeded.**

- **E\_BAD\_ARGUMENT**

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

- **E\_CONNECTED**

  **The field is already connected to a form.**

- **E\_SYSTEM\_ERROR**

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

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

- **E\_OK**

  **The routine succeeded.**

- **E\_BAD\_ARGUMENT**

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

- **E\_POSTED**

  **The form has already been posted.**

## PORTABILITY

**These routines emulate the System V forms 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),** **form(3FORM)**
