---
name: "FreeXId"
section: "3tk"
platform: "linux"
package: "tk8.3-doc"
version: "8.3.5-14"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/FreeXId/3tk"
---

# FreeXId(3tk)

make X resource identifier available for reuse

```

```

## NAME

Tk\_FreeXId - make X resource identifier available for reuse

## SYNOPSIS

```
#include <tk.h>

Tk_FreeXId(display, id)
```

## ARGUMENTS

- Display *\*display* (in)

  Display for which *id* was allocated.

- XID *id* (in)

  Identifier of X resource (window, font, pixmap, cursor, graphics context, or colormap) that is no longer in use.

  ```

  ```

## DESCRIPTION

The default allocator for resource identifiers provided by Xlib is very simple-minded and does not allow resource identifiers to be re-used. If a long-running application reaches the end of the resource id space, it will generate an X protocol error and crash. Tk replaces the default id allocator with its own allocator, which allows identifiers to be reused. In order for this to work, **Tk\_FreeXId** must be called to tell the allocator about resources that have been freed. Tk automatically calls **Tk\_FreeXId** whenever it frees a resource, so if you use procedures like **Tk\_GetFont**, **Tk\_GetGC**, and **Tk\_GetPixmap** then you need not call **Tk\_FreeXId**. However, if you allocate resources directly from Xlib, for example by calling **XCreatePixmap**, then you should call **Tk\_FreeXId** when you call the corresponding Xlib free procedure, such as **XFreePixmap**. If you don't call **Tk\_FreeXId** then the resource identifier will be lost, which could cause problems if the application runs long enough to lose all of the available identifiers.

## KEYWORDS

resource identifier
