[#CRYPTO_get_ex_new_index]
= CRYPTO&lowbar;get&lowbar;ex&lowbar;new&lowbar;index
:mrdocs:

Allocate a new application&hyphen;specific ex&lowbar;data index for a CRYPTO&lowbar;EX&lowbar;INDEX&lowbar;&ast; class&period;

== Synopsis

Declared in `&lt;openssl&sol;crypto&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
int
CRYPTO&lowbar;get&lowbar;ex&lowbar;new&lowbar;index(
    int class&lowbar;index,
    long argl,
    void* argp,
    xref:CRYPTO_EX_new.adoc[CRYPTO&lowbar;EX&lowbar;new]* new&lowbar;func,
    xref:CRYPTO_EX_dup.adoc[CRYPTO&lowbar;EX&lowbar;dup]* dup&lowbar;func,
    xref:CRYPTO_EX_free.adoc[CRYPTO&lowbar;EX&lowbar;free]* free&lowbar;func);
----

== Return Value

Non&hyphen;negative index on success, or &hyphen;1 on failure&period;

== Parameters

[cols="1,4"]
|===
| Name| Description
| *class&lowbar;index*
| CRYPTO&lowbar;EX&lowbar;INDEX&lowbar;&ast; identifying the object class&period;
| *argl*
| Opaque long passed to the new&sol;dup&sol;free callbacks&period;
| *argp*
| Opaque pointer passed to the new&sol;dup&sol;free callbacks&period;
| *new&lowbar;func*
| Optional constructor callback, or NULL&period;
| *dup&lowbar;func*
| Optional duplication callback, or NULL&period;
| *free&lowbar;func*
| Optional destructor callback, or NULL&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
