---
name: "memins"
section: "3pub"
platform: "linux"
package: "publib-dev"
version: "0.40-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/memins"
---

# memins(3pub)

insert bytes at beginning of memory block

## NAME

memins - insert bytes at beginning of memory block

## SYNOPSIS

```
#include <publib.h>
void *memins(void *tgt, size_t tgtsize, const void *src, size_t srcsize);
```

## DESCRIPTION

*memins* inserts *srcsize* bytes from *src* at the beginning of *tgt*, but moves the first *tgtsize* out of the way.  The source and target memory blocks must not overlap.

## RETURN VALUE

*memins* returns its first argument.

## EXAMPLE

To insert a new element at the *i*th position of an array, one might do the following.

```
int new, array[10];
memins(array+i, (10-i-1)*sizeof(array[0]), &new, sizeof(new));

```

Please note that the above code carefully avoids the trap of moving the last element of the array past the end of the array.

## SEE ALSO

publib(3), strins(3)

## AUTHOR

Lars Wirzenius (lars.wirzenius@helsinki.fi)
