since: 2.76


g_ptr_array_new_take (
  gpointer* data,
  gsize len,
  GDestroyNotify element_free_func


Creates a new GPtrArray with data as pointers, len as length and a reference count of 1.

This avoids having to copy such data manually. After this call, data belongs to the GPtrArray and may no longer be modified by the caller. The memory of data has to be dynamically allocated and will eventually be freed with g_free().

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


Available since: 2.76

This function is not directly available to language bindings.



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 called function takes ownership of the data, and is responsible for freeing it.

Type: gsize

The number of pointers in data.


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.