talloc_array(3)

πŸ“¦
version 2.4.4 Β· 4 versions
, in centos-stream 9

πŸ¦‹ tally-ho, bestie β€” it's talloc_array(3)

okay so this is the talloc manual page, babes β€” talloc, the manual name, is right there in the title and it's giving "we're in the talloc girlies' section of the man pages" ✨

πŸŽ€ NAME πŸŽ€

talloc_array β€” the talloc array functions, periodt πŸ’…

  • Talloc contains some handy helpers for handling Arrays conveniently. fr fr, that's the whole vibe.

✨ SYNOPSIS ✨

🌸 Modules

The talloc string functions β€” talloc string allocation and manipulation functions.

🫢 Functions

  • _PUBLIC_ void * talloc_array (const void *ctx, #type, unsigned count) β€” allocate an array πŸ’–
  • _PUBLIC_ void * talloc_array_size (const void *ctx, size_t size, unsigned count) β€” allocate an array (yes, again, iconic)
  • void * talloc_array_ptrtype (const void *ctx, const void *ptr, unsigned count) β€” allocate an array into a typed pointer πŸ‘‘
  • size_t talloc_array_length (const void *ctx) β€” get the number of elements in a talloc'ed array 🌈
  • void * talloc_zero_array (const void *ctx, #type, unsigned count) β€” allocate a zero-initialized array 🧚
  • _PUBLIC_ void * talloc_realloc (const void *ctx, void *ptr, #type, size_t count) β€” change the size of a talloc array πŸ”₯
  • _PUBLIC_ void * talloc_realloc_zero (const void *ctx, void *ptr, size_t count) β€” change the size of a talloc array, zero out additional space ⭐
  • void * talloc_realloc_size (const void *ctx, void *ptr, size_t size) β€” untyped realloc to change the size of a talloc array πŸ’œ
  • _PUBLIC_ void * talloc_realloc_fn (const void *context, void *ptr, size_t size) β€” provide a function version of talloc_realloc_size πŸ“

πŸ’– Detailed Description πŸ’–

Talloc contains some handy helpers for handling Arrays conveniently. That's it, that's the tea πŸ’…


🌟 Function Documentation 🌟

πŸ¦‹ _PUBLIC_ void* talloc_array (const void * ctx, # type, unsigned count)

Allocate an array, bestie. The macro is equivalent to:

(type *)talloc_size(ctx, sizeof(type) * count);

except that it provides integer overflow protection for the multiply, returning NULL if the multiply overflows. so like, she's got your back 😭

Parameters

  • ctx β€” The talloc context to hang the result off.
  • type β€” The type that we want to allocate.
  • count β€” The number of 'type' elements you want to allocate.

Returns

The allocated result, properly cast to 'type *', NULL on error.

Example

unsigned int *a, *b;
a = talloc_zero(NULL, unsigned int);
b = talloc_array(a, unsigned int, 100);

See also

talloc()

talloc_zero_array()


πŸ’€ size_t talloc_array_length (const void * ctx)

Get the number of elements in a talloc'ed array. A talloc chunk carries its own size, so for talloc'ed arrays it is not necessary to store the number of elements explicitly β€” she already knows her own length, main character energy πŸ‘‘

Parameters

  • ctx β€” The allocated array.

Returns

The number of elements in ctx.


🧚 void* talloc_array_ptrtype (const void * ctx, const void * ptr, unsigned count)

Allocate an array into a typed pointer. The macro should be used when you have a pointer to an array and want to allocate memory of an array to point at with this pointer. When compiling with gcc >= 3 it is typesafe. Note this is a wrapper of talloc_array_size() and talloc_get_name() will return the current location in the source file and not the type β€” so don't come for her about the name, okay? πŸ™ˆ

Parameters

  • ctx β€” The talloc context to hang the result off.
  • ptr β€” The pointer you want to assign the result to.
  • count β€” The number of elements you want to allocate.

Returns

The allocated memory chunk, properly casted. NULL on error.


🌈 _PUBLIC_ void* talloc_array_size (const void * ctx, size_t size, unsigned count)

Allocate an array. short and sweet, we love her ✨

Parameters

  • ctx β€” The talloc context to hang the result off.
  • size β€” The size of an array element.
  • count β€” The number of elements you want to allocate.

Returns

The allocated result, NULL on error.


πŸ”₯ _PUBLIC_ void* talloc_realloc (const void * ctx, void * ptr, # type, size_t count)

Change the size of a talloc array. The macro changes the size of a talloc pointer. The 'count' argument is the number of elements of type 'type' that you want the resulting pointer to hold. glow-up for your array, literally πŸ’…

talloc_realloc() has the following equivalences:

talloc_realloc(ctx, NULL, type, 1) ==> talloc(ctx, type);
talloc_realloc(ctx, NULL, type, N) ==> talloc_array(ctx, type, N);
talloc_realloc(ctx, ptr, type, 0)  ==> talloc_free(ptr);

The 'context' argument is only used if 'ptr' is NULL, otherwise it is ignored. noted 🫢

Parameters

  • ctx β€” The parent context used if ptr is NULL.
  • ptr β€” The chunk to be resized.
  • type β€” The type of the array element inside ptr.
  • count β€” The intended number of array elements.

Returns

The new array, NULL on error. The call will fail either due to a lack of memory, or because the pointer has more than one parent (see talloc_reference()). so if it flops, that's why 😭


πŸ“ _PUBLIC_ void* talloc_realloc_fn (const void * context, void * ptr, size_t size)

Provide a function version of talloc_realloc_size. This is a non-macro version of talloc_realloc(), which is useful as libraries sometimes want a ralloc function pointer. A realloc() implementation encapsulates the functionality of malloc(), free() and realloc() in one call, which is why it is useful to be able to pass around a single function pointer. one function, three jobs, she's booked and busy πŸ’€

Parameters

  • context β€” The parent context used if ptr is NULL.
  • ptr β€” The chunk to be resized.
  • size β€” The new chunk size.

Returns

The new chunk, NULL on error.


πŸ’œ void* talloc_realloc_size (const void * ctx, void * ptr, size_t size)

Untyped realloc to change the size of a talloc array. The macro is useful when the type is not known so the typesafe talloc_realloc() cannot be used. for when the type is a mystery, iykyk πŸ•΅οΈβ€β™€οΈ

Parameters

  • ctx β€” The parent context used if 'ptr' is NULL.
  • ptr β€” The chunk to be resized.
  • size β€” The new chunk size.

Returns

The new array, NULL on error.


⭐ _PUBLIC_ void* talloc_realloc_zero (const void * ctx, void * ptr, size_t count)

Change the size of a talloc array, zero out additional space. Same as talloc_realloc() with the additional behavior to zero out code in case the array is expanded. fresh clean zeros, no cap 🌸

heads up bestie: the parameter list below literally includes type, even though the signature above doesn't have one. we're just reporting the facts, we don't make the rules πŸ™ˆ

Parameters

  • ctx β€” The parent context used if ptr is NULL.
  • ptr β€” The chunk to be resized.
  • type β€” The type of the array element inside ptr.
  • count β€” The intended number of array elements.

Returns

The new array, NULL on error. The call will fail either due to a lack of memory, or because the pointer has more than one parent (see talloc_reference()).


πŸ‘‘ void* talloc_zero_array (const void * ctx, # type, unsigned count)

Allocate a zero-initialized array. squeaky clean, obsessed πŸŽ€

Parameters

  • ctx β€” The talloc context to hang the result off.
  • type β€” The type that we want to allocate.
  • count β€” The number of 'type' elements you want to allocate.

Returns

The allocated result casted to 'type *', NULL on error.

The talloc_zero_array() macro is equivalent to:

ptr = talloc_array(ctx, type, count);
if (ptr) memset(ptr, 0, sizeof(type) * count);

🫢 Author 🫢

Generated automatically by Doxygen for talloc from the source code. not a human, just a robot doing her little thing πŸ€–πŸ’–


and that's the whole page, bestie! this little beauty is Version 2.0, dated Wed May 13 2026, and it lives its best life under the name talloc_array(3) β€” see you in the man pages, muah πŸ’‹πŸŽ€βœ¨

πŸ“¦ where this page comes from