allows the application to set callbacks to replace the otherwise used internal
memory functions.
-This man page only adds documentation for the callbacks, see the
-\fIcurl_global_init(3)\fP man page for all the rest. When you use this
-function, all callback arguments must be set to valid function pointers.
+When you use this function, all callback arguments must be set to valid
+function pointers. \fBIf you are using libcurl with multiple threads the
+callback replacement functions must be thread safe.\fP
The prototypes for the given callbacks should match these:
.IP "void *malloc_callback(size_t size);"
To replace strdup()
.IP "void *calloc_callback(size_t nmemb, size_t size);"
To replace calloc()
+.RE
+This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
+to that man page for documentation.
.SH "CAUTION"
Manipulating these gives considerable powers to the application to severely
screw things up for libcurl. Take care!
\fBcurl_global_* functions.\fP These functions are not thread safe. If you are
using libcurl with multiple threads it is especially important that before use
-you call \fIcurl_global_init(3)\fP to explicitly initialize the library and its
-dependents, rather than rely on the "lazy" fail-safe initialization that takes
-place the first time \fIcurl_easy_init(3)\fP is called. For an in-depth
-explanation refer to \fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
+you call \fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to
+explicitly initialize the library and its dependents, rather than rely on the
+"lazy" fail-safe initialization that takes place the first time
+\fIcurl_easy_init(3)\fP is called. For an in-depth explanation refer to
+\fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
+
+\fBMemory functions.\fP These functions, provided either by your operating
+system or your own replacements, must be thread safe. You can use
+\fIcurl_global_init_mem(3)\fP to set your own replacement memory functions.
\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.