### Function

# GLib PtrArray new_from_array

since: 2.76

#### Declaration

    GPtrArray*
    g_ptr_array_new_from_array (
      gpointer* data,
      gsize len,
      GCopyFunc copy_func,
      gpointer copy_func_user_data,
      GDestroyNotify element_free_func
    )

#### Description

Creates a new `GPtrArray`, copying `len` pointers from `data`, and setting the array’s reference count to 1.

This avoids having to manually add each element one by one.

If `copy_func` is provided, then it is used to copy each element before adding them to the new array. If it is `NULL` then the pointers are copied directly.

It also sets `element_free_func` for freeing each element when the array is destroyed either via g_ptr_array_unref(), when `g_ptr_array_free()` is called with `free_segment` set to `TRUE` or when removing elements.

Do not use it if `len` is greater than `G_MAXUINT`. `GPtrArray` stores the length of its data in #guint, which may be shorter than

# gsize.

Available since: 2.76

This function is not directly available to language bindings.

#### Parameters

`data`

  Type: An array of `gpointer`

  An array of pointers, or `NULL` for an empty array.

  The argument can be `NULL`.
  The length of the array is specified in the `len` argument.
  The data is owned by the caller of the function.

`len`

  Type: `gsize`

  The number of pointers in `data`.

`copy_func`

  Type: `GCopyFunc`

  A copy function used to copy every element in the array or `NULL`.

`copy_func_user_data`

  Type: `gpointer`

  User data passed to `copy_func`, or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`element_free_func`

  Type: `GDestroyNotify`

  A function to free elements on `array` destruction or `NULL`.

#### Return value

Type: An array of `gpointer`

A new `GPtrArray`.

The caller of the function takes ownership of the data, and is responsible for freeing it.