c062b0ae86dd7954a6bf507b4a35234fd7402655
[m6w6/libmemcached] / libmemcached / memcached_memory_allocators.html
1
2
3 <!DOCTYPE html>
4 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
6 <head>
7 <meta charset="utf-8">
8
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
11 <title>Use custom allocators for embedded usage &mdash; libmemcached 1.0.99 documentation</title>
12
13
14
15
16
17
18
19
20 <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
21
22
23 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
24 <script src="../_static/jquery.js"></script>
25 <script src="../_static/underscore.js"></script>
26 <script src="../_static/doctools.js"></script>
27 <script src="../_static/language_data.js"></script>
28
29 <script type="text/javascript" src="../_static/js/theme.js"></script>
30
31
32
33
34 <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
35 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
36 <link rel="index" title="Index" href="../genindex.html" />
37 <link rel="search" title="Search" href="../search.html" />
38 <link rel="copyright" title="Copyright" href="../copyright.html" />
39 <link rel="next" title="Storing custom user information in the client." href="memcached_user_data.html" />
40 <link rel="prev" title="Setting callbacks" href="memcached_callback.html" />
41 </head>
42
43 <body class="wy-body-for-nav">
44
45
46 <div class="wy-grid-for-nav">
47
48 <nav data-toggle="wy-nav-shift" class="wy-nav-side">
49 <div class="wy-side-scroll">
50 <div class="wy-side-nav-search" >
51
52
53
54 <a href="../index.html" class="icon icon-home"> libmemcached
55
56
57
58 </a>
59
60
61
62
63 <div class="version">
64 1.0
65 </div>
66
67
68
69
70 <div role="search">
71 <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
72 <input type="text" name="q" placeholder="Search docs" />
73 <input type="hidden" name="check_keywords" value="yes" />
74 <input type="hidden" name="area" value="default" />
75 </form>
76 </div>
77
78
79 </div>
80
81 <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
82
83
84
85
86
87
88 <p class="caption"><span class="caption-text">libmemcached</span></p>
89 <ul class="current">
90 <li class="toctree-l1"><a class="reference internal" href="../libmemcached.html">Introduction</a></li>
91 <li class="toctree-l1 current"><a class="reference internal" href="index.html">libmemcached API</a><ul class="current">
92 <li class="toctree-l2"><a class="reference internal" href="index_basics.html">Basics</a></li>
93 <li class="toctree-l2"><a class="reference internal" href="index_data.html">Working with Data</a></li>
94 <li class="toctree-l2"><a class="reference internal" href="index_errors.html">Messages and Errors</a></li>
95 <li class="toctree-l2 current"><a class="reference internal" href="index_advanced.html">Advanced Topics</a></li>
96 <li class="toctree-l2"><a class="reference internal" href="index_deprecated.html">Deprecated Functionality</a></li>
97 </ul>
98 </li>
99 <li class="toctree-l1"><a class="reference internal" href="index_misc.html">Misc</a><ul>
100 <li class="toctree-l2"><a class="reference internal" href="configuration.html">Configuration</a></li>
101 <li class="toctree-l2"><a class="reference internal" href="constants.html">Constants</a></li>
102 <li class="toctree-l2"><a class="reference internal" href="examples.html">Examples</a></li>
103 <li class="toctree-l2"><a class="reference internal" href="versioning.html">Versioning</a></li>
104 </ul>
105 </li>
106 </ul>
107 <p class="caption"><span class="caption-text">libmemcachedutil</span></p>
108 <ul>
109 <li class="toctree-l1"><a class="reference internal" href="../libmemcachedutil.html">Introduction</a></li>
110 <li class="toctree-l1"><a class="reference internal" href="../libmemcachedutil/index.html">libmemcachedutil API</a><ul>
111 <li class="toctree-l2"><a class="reference internal" href="../libmemcachedutil/memcached_pool.html">Working with memcached pools</a></li>
112 </ul>
113 </li>
114 </ul>
115 <p class="caption"><span class="caption-text">libhashkit</span></p>
116 <ul>
117 <li class="toctree-l1"><a class="reference internal" href="../libhashkit.html">Introduction</a></li>
118 <li class="toctree-l1"><a class="reference internal" href="../libhashkit/index.html">libhashkit API</a><ul>
119 <li class="toctree-l2"><a class="reference internal" href="../libhashkit/hashkit_create.html">Creating a hashkit structure</a></li>
120 <li class="toctree-l2"><a class="reference internal" href="../libhashkit/hashkit_function.html">Set Hash Function</a></li>
121 <li class="toctree-l2"><a class="reference internal" href="../libhashkit/hashkit_functions.html">Available Hashes</a></li>
122 <li class="toctree-l2"><a class="reference internal" href="../libhashkit/hashkit_value.html">Generate hash value</a></li>
123 </ul>
124 </li>
125 </ul>
126 <p class="caption"><span class="caption-text">Client Applications</span></p>
127 <ul>
128 <li class="toctree-l1"><a class="reference internal" href="../bin/index.html">Client Applications</a><ul>
129 <li class="toctree-l2"><a class="reference internal" href="../bin/memcapable.html">memcapable - Checking a Memcached server capabilities and compatibility</a></li>
130 <li class="toctree-l2"><a class="reference internal" href="../bin/memcat.html">memcat - “cat” data from a server</a></li>
131 <li class="toctree-l2"><a class="reference internal" href="../bin/memcp.html">memcp - Copy data to a server</a></li>
132 <li class="toctree-l2"><a class="reference internal" href="../bin/memdump.html">memdump - Dumping your server</a></li>
133 <li class="toctree-l2"><a class="reference internal" href="../bin/memerror.html">memerror - translate an error code to a string</a></li>
134 <li class="toctree-l2"><a class="reference internal" href="../bin/memflush.html">memflush - flush all data from a server</a></li>
135 <li class="toctree-l2"><a class="reference internal" href="../bin/memrm.html">memrm - Remove data from a server</a></li>
136 <li class="toctree-l2"><a class="reference internal" href="../bin/memslap.html">memslap - Load testing and benchmarking a server</a></li>
137 <li class="toctree-l2"><a class="reference internal" href="../bin/memaslap.html">memaslap - Load testing and benchmarking a server</a></li>
138 <li class="toctree-l2"><a class="reference internal" href="../bin/memstat.html">memstat - Gather statistics from a server</a></li>
139 <li class="toctree-l2"><a class="reference internal" href="../bin/memexist.html">memexist - Check for the existence of a key</a></li>
140 <li class="toctree-l2"><a class="reference internal" href="../bin/memparse.html">memparse - Parse an option string</a></li>
141 <li class="toctree-l2"><a class="reference internal" href="../bin/memping.html">memping - Test to see if a server is available.</a></li>
142 <li class="toctree-l2"><a class="reference internal" href="../bin/memtouch.html">memtouch - Touches a key.</a></li>
143 </ul>
144 </li>
145 </ul>
146
147
148
149 </div>
150 </div>
151 </nav>
152
153 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
154
155
156 <nav class="wy-nav-top" aria-label="top navigation">
157
158 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
159 <a href="../index.html">libmemcached</a>
160
161 </nav>
162
163
164 <div class="wy-nav-content">
165
166 <div class="rst-content">
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184 <div role="navigation" aria-label="breadcrumbs navigation">
185
186 <ul class="wy-breadcrumbs">
187
188 <li><a href="../index.html">Docs</a> &raquo;</li>
189
190 <li><a href="index.html">libmemcached API</a> &raquo;</li>
191
192 <li><a href="index_advanced.html">Advanced Topics</a> &raquo;</li>
193
194 <li><a href="index_advanced_internals.html">Internal Behavior</a> &raquo;</li>
195
196 <li>Use custom allocators for embedded usage</li>
197
198
199 <li class="wy-breadcrumbs-aside">
200
201
202
203 </li>
204
205 </ul>
206
207
208 <hr/>
209 </div>
210 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
211 <div itemprop="articleBody">
212
213 <div class="section" id="use-custom-allocators-for-embedded-usage">
214 <h1>Use custom allocators for embedded usage<a class="headerlink" href="#use-custom-allocators-for-embedded-usage" title="Permalink to this headline"></a></h1>
215 <p>Manage memory allocator functions</p>
216 <div class="section" id="synopsis">
217 <h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Permalink to this headline"></a></h2>
218 <dl class="simple">
219 <dt>#include &lt;libmemcached/memcached.h&gt;</dt><dd><p>Compile and link with -lmemcached</p>
220 </dd>
221 </dl>
222 <dl class="function">
223 <dt id="_CPPv431memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv">
224 <span id="_CPPv331memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv"></span><span id="_CPPv231memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv"></span><span id="memcached_set_memory_allocators__memcached_stP.memcached_malloc_fn.memcached_free_fn.memcached_realloc_fn.memcached_calloc_fn.voidP"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_set_memory_allocators</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <a class="reference internal" href="#_CPPv419memcached_malloc_fn" title="memcached_malloc_fn">memcached_malloc_fn</a> <em>mem_malloc</em>, <a class="reference internal" href="#_CPPv417memcached_free_fn" title="memcached_free_fn">memcached_free_fn</a> <em>mem_free</em>, <a class="reference internal" href="#_CPPv420memcached_realloc_fn" title="memcached_realloc_fn">memcached_realloc_fn</a> <em>mem_realloc</em>, <a class="reference internal" href="#_CPPv419memcached_calloc_fn" title="memcached_calloc_fn">memcached_calloc_fn</a> <em>mem_calloc</em>, void *<em>context</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv431memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv" title="Permalink to this definition"></a><br /></dt>
225 <dd></dd></dl>
226
227 <dl class="function">
228 <dt id="_CPPv431memcached_get_memory_allocatorsP12memcached_stP19memcached_malloc_fnP17memcached_free_fnP20memcached_realloc_fnP19memcached_calloc_fn">
229 <span id="_CPPv331memcached_get_memory_allocatorsP12memcached_stP19memcached_malloc_fnP17memcached_free_fnP20memcached_realloc_fnP19memcached_calloc_fn"></span><span id="_CPPv231memcached_get_memory_allocatorsP12memcached_stP19memcached_malloc_fnP17memcached_free_fnP20memcached_realloc_fnP19memcached_calloc_fn"></span><span id="memcached_get_memory_allocators__memcached_stP.memcached_malloc_fnP.memcached_free_fnP.memcached_realloc_fnP.memcached_calloc_fnP"></span>void <code class="sig-name descname">memcached_get_memory_allocators</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <a class="reference internal" href="#_CPPv419memcached_malloc_fn" title="memcached_malloc_fn">memcached_malloc_fn</a> *<em>mem_malloc</em>, <a class="reference internal" href="#_CPPv417memcached_free_fn" title="memcached_free_fn">memcached_free_fn</a> *<em>mem_free</em>, <a class="reference internal" href="#_CPPv420memcached_realloc_fn" title="memcached_realloc_fn">memcached_realloc_fn</a> *<em>mem_realloc</em>, <a class="reference internal" href="#_CPPv419memcached_calloc_fn" title="memcached_calloc_fn">memcached_calloc_fn</a> *<em>mem_calloc</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv431memcached_get_memory_allocatorsP12memcached_stP19memcached_malloc_fnP17memcached_free_fnP20memcached_realloc_fnP19memcached_calloc_fn" title="Permalink to this definition"></a><br /></dt>
230 <dd></dd></dl>
231
232 <dl class="function">
233 <dt id="_CPPv439memcached_get_memory_allocators_contextPK12memcached_st">
234 <span id="_CPPv339memcached_get_memory_allocators_contextPK12memcached_st"></span><span id="_CPPv239memcached_get_memory_allocators_contextPK12memcached_st"></span><span id="memcached_get_memory_allocators_context__memcached_stCP"></span>void *<code class="sig-name descname">memcached_get_memory_allocators_context</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv439memcached_get_memory_allocators_contextPK12memcached_st" title="Permalink to this definition"></a><br /></dt>
235 <dd></dd></dl>
236
237 <dl class="type">
238 <dt id="_CPPv419memcached_malloc_fn">
239 <span id="_CPPv319memcached_malloc_fn"></span><span id="_CPPv219memcached_malloc_fn"></span><span id="memcached_malloc_fn"></span><em class="property">typedef </em>void *(*<code class="sig-name descname">memcached_malloc_fn</code>)<span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *ptr, <em class="property">const</em> size_t size, void *context<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv419memcached_malloc_fn" title="Permalink to this definition"></a><br /></dt>
240 <dd></dd></dl>
241
242 <dl class="type">
243 <dt id="_CPPv420memcached_realloc_fn">
244 <span id="_CPPv320memcached_realloc_fn"></span><span id="_CPPv220memcached_realloc_fn"></span><span id="memcached_realloc_fn"></span><em class="property">typedef </em>void *(*<code class="sig-name descname">memcached_realloc_fn</code>)<span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *ptr, void *mem, <em class="property">const</em> size_t size, void *context<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv420memcached_realloc_fn" title="Permalink to this definition"></a><br /></dt>
245 <dd></dd></dl>
246
247 <dl class="type">
248 <dt id="_CPPv417memcached_free_fn">
249 <span id="_CPPv317memcached_free_fn"></span><span id="_CPPv217memcached_free_fn"></span><span id="memcached_free_fn"></span><em class="property">typedef </em>void (*<code class="sig-name descname">memcached_free_fn</code>)<span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *ptr, void *mem, void *context<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv417memcached_free_fn" title="Permalink to this definition"></a><br /></dt>
250 <dd></dd></dl>
251
252 <dl class="type">
253 <dt id="_CPPv419memcached_calloc_fn">
254 <span id="_CPPv319memcached_calloc_fn"></span><span id="_CPPv219memcached_calloc_fn"></span><span id="memcached_calloc_fn"></span><em class="property">typedef </em>void *(*<code class="sig-name descname">memcached_calloc_fn</code>)<span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *ptr, size_t nelem, <em class="property">const</em> size_t elsize, void *context<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv419memcached_calloc_fn" title="Permalink to this definition"></a><br /></dt>
255 <dd></dd></dl>
256
257 </div>
258 <div class="section" id="description">
259 <h2>DESCRIPTION<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
260 <p><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">libmemcached</span></code> allows you to specify your own memory allocators, optimized for
261 your application. This enables libmemcached to be used inside of applications
262 that have their own malloc implementation.</p>
263 <p><a class="reference internal" href="#_CPPv431memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv" title="memcached_set_memory_allocators"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_set_memory_allocators()</span></code></a> is used to set the memory allocators
264 used by the memcached instance specified by ptr. Please note that you cannot
265 override only one of the memory allocators, you have to specify a complete new
266 set if you want to override one of them. All of the memory allocation functions
267 should behave as specified in the C99 standard. Specify NULL as all functions to
268 reset them to the default values.</p>
269 <p><a class="reference internal" href="#_CPPv431memcached_get_memory_allocatorsP12memcached_stP19memcached_malloc_fnP17memcached_free_fnP20memcached_realloc_fnP19memcached_calloc_fn" title="memcached_get_memory_allocators"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_get_memory_allocators()</span></code></a> is used to get the currently used memory
270 allocators by a memcached handle.</p>
271 <p><a class="reference internal" href="#_CPPv439memcached_get_memory_allocators_contextPK12memcached_st" title="memcached_get_memory_allocators_context"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_get_memory_allocators_context()</span></code></a> returns the void * that was
272 passed in during the call to <a class="reference internal" href="#_CPPv431memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv" title="memcached_set_memory_allocators"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_set_memory_allocators()</span></code></a>.</p>
273 <p>The first argument to the memory allocator functions is a pointer to a memcached
274 structure, the is passed as const and you will need to clone it in order to make
275 use of any operation which would modify it.</p>
276 </div>
277 <div class="section" id="notes">
278 <h2>NOTES<a class="headerlink" href="#notes" title="Permalink to this headline"></a></h2>
279 <p>In version 0.38 all functions were modified to have a context void pointer
280 passed to them. This was so that customer allocators could have their own space
281 for memory.</p>
282 </div>
283 <div class="section" id="return">
284 <h2>RETURN<a class="headerlink" href="#return" title="Permalink to this headline"></a></h2>
285 <p><a class="reference internal" href="#_CPPv431memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv" title="memcached_set_memory_allocators"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_set_memory_allocators()</span></code></a> return <a class="reference internal" href="memcached_return_t.html#_CPPv4N18memcached_return_t17MEMCACHED_SUCCESSE" title="MEMCACHED_SUCCESS"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_SUCCESS</span></code></a> upon success,
286 and <a class="reference internal" href="memcached_return_t.html#_CPPv4N18memcached_return_t17MEMCACHED_FAILUREE" title="MEMCACHED_FAILURE"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_FAILURE</span></code></a> if you don’t pass a complete set of function pointers.</p>
287 </div>
288 <div class="section" id="see-also">
289 <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h2>
290 <ul class="simple">
291 <li><p><em class="manpage"><a class="manpage reference external" href="http://man7.org/linux/man-pages/man1/memcached.1.html">memcached(1)</a></em></p></li>
292 <li><p><a class="reference internal" href="../libmemcached.html"><span class="doc">C/C++ Client Library for memcached</span></a></p></li>
293 <li><p><a class="reference internal" href="memcached_strerror.html"><span class="doc">Converting Error Codes to Messages</span></a></p></li>
294 </ul>
295 </div>
296 </div>
297
298
299 </div>
300
301 </div>
302 <footer>
303
304 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
305
306 <a href="memcached_user_data.html" class="btn btn-neutral float-right" title="Storing custom user information in the client." accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
307
308
309 <a href="memcached_callback.html" class="btn btn-neutral float-left" title="Setting callbacks" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
310
311 </div>
312
313
314 <hr/>
315
316 <div role="contentinfo">
317 <p>
318 &copy; <a href="../copyright.html">Copyright</a>
319
320 </p>
321 </div>
322 Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
323
324 </footer>
325
326 </div>
327 </div>
328
329 </section>
330
331 </div>
332
333
334
335 <script type="text/javascript">
336 jQuery(function () {
337 SphinxRtdTheme.Navigation.enable(true);
338 });
339 </script>
340
341
342
343
344
345
346 </body>
347 </html>