---
name: "elf_memory"
section: "3"
platform: "linux"
package: "libelf"
version: "0.197-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/elf_memory"
---

# elf\_memory(3)

create an ELF descriptor from a memory buffer

## NAME

elf\_memory - create an ELF descriptor from a memory buffer

## SYNOPSIS

```
#include <libelf.h>
Elf * elf_memory(char *" image , size_t size );
```

## DESCRIPTION

The **elf\_memory**() function creates a new ELF descriptor from a memory region containing an ELF object.  This function is used when the ELF data is already present in memory rather than being read from a file descriptor.

The memory pointed to by *image* must contain a complete ELF file or archive. The contents must remain valid and unmodified for the lifetime of the resulting ELF descriptor.

The ELF descriptor returned by **elf\_memory**() is opened in read-only mode using ELF\_C\_READ\_MMAP\_PRIVATE (see **elf\_begin**). The underlying memory image should not be directly modified by the application  while its ELF descriptor is open.  Some libelf functions, such as **elf\_compress**() and **gelf\_update\_\***(), may internally modify the underlying image and therefore require that the underlying image be writable.  The use of a read-only image (e.g., memory mapped with **PROT\_READ** only) may result in failures or crashes.

## PARAMETERS

- *image*

  A pointer to a memory buffer that contains the complete contents of an ELF file or archive. If NULL, this function fails and returns NULL.

- *size*

  The size in bytes of the memory region pointed to by *image*. Must be at least as much as a full ELF header and should cover the entire ELF object.

## RETURN VALUE

On success, **elf\_memory**() returns a pointer to an **Elf** descriptor representing the archive or ELF file contained in *image*.

On failure, it returns NULL and sets an error code retrievable by [**elf\_errmsg**(3)](/elf_errmsg/3.md).

## SEE ALSO

[**elf\_begin**(3)](/elf_begin/3.md), [**elf\_errmsg**(3)](/elf_errmsg/3.md), [**libelf**(3)](/libelf/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

| |
| --- |
| **Interface Attribute Value** |
| **elf\_memory**() |

## REPORTING BUGS

Report bugs to \<elfutils-devel@sourceware.org\> or https://sourceware.org/bugzilla/.
