c7dd14a7d89ddf13bdae08ff230aad8c5f70993e
[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="Library 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><ul class="current">
96 <li class="toctree-l3 current"><a class="reference internal" href="index_advanced_internals.html">Internal Behavior</a><ul class="current">
97 <li class="toctree-l4"><a class="reference internal" href="memcached_behavior.html">Behaviors of the library</a></li>
98 <li class="toctree-l4"><a class="reference internal" href="memcached_callback.html">Library callbacks</a></li>
99 <li class="toctree-l4 current"><a class="current reference internal" href="#">Use custom allocators for embedded usage</a></li>
100 <li class="toctree-l4"><a class="reference internal" href="memcached_user_data.html">Storing custom user information in the client.</a></li>
101 </ul>
102 </li>
103 <li class="toctree-l3"><a class="reference internal" href="index_advanced_aeh.html">Authentication, Encryption &amp; Hashing</a></li>
104 <li class="toctree-l3"><a class="reference internal" href="index_advanced_servers.html">Servers and Server Lists</a></li>
105 <li class="toctree-l3"><a class="reference internal" href="index_advanced_daemon.html">Affecting the memcached Daemon</a></li>
106 <li class="toctree-l3"><a class="reference internal" href="index_advanced_stats.html">Statistics</a></li>
107 </ul>
108 </li>
109 <li class="toctree-l2"><a class="reference internal" href="index_deprecated.html">Deprecated Functionality</a></li>
110 </ul>
111 </li>
112 <li class="toctree-l1"><a class="reference internal" href="index_misc.html">Misc</a></li>
113 </ul>
114 <p class="caption"><span class="caption-text">libmemcachedutil</span></p>
115 <ul>
116 <li class="toctree-l1"><a class="reference internal" href="../libmemcachedutil.html">Introduction</a></li>
117 <li class="toctree-l1"><a class="reference internal" href="../libmemcachedutil/index.html">libmemcachedutil API</a></li>
118 </ul>
119 <p class="caption"><span class="caption-text">libhashkit</span></p>
120 <ul>
121 <li class="toctree-l1"><a class="reference internal" href="../libhashkit.html">Introduction</a></li>
122 <li class="toctree-l1"><a class="reference internal" href="../libhashkit/index.html">libhashkit API</a></li>
123 </ul>
124 <p class="caption"><span class="caption-text">Client Applications</span></p>
125 <ul>
126 <li class="toctree-l1"><a class="reference internal" href="../bin/index.html">Client Applications</a></li>
127 </ul>
128 <p class="caption"><span class="caption-text">Copyright</span></p>
129 <ul>
130 <li class="toctree-l1"><a class="reference internal" href="../copyright.html">Copyright</a></li>
131 </ul>
132
133
134
135 </div>
136 </div>
137 </nav>
138
139 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
140
141
142 <nav class="wy-nav-top" aria-label="top navigation">
143
144 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
145 <a href="../index.html">libmemcached</a>
146
147 </nav>
148
149
150 <div class="wy-nav-content">
151
152 <div class="rst-content">
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 <div role="navigation" aria-label="breadcrumbs navigation">
171
172 <ul class="wy-breadcrumbs">
173
174 <li><a href="../index.html">Docs</a> &raquo;</li>
175
176 <li><a href="index.html">libmemcached API</a> &raquo;</li>
177
178 <li><a href="index_advanced.html">Advanced Topics</a> &raquo;</li>
179
180 <li><a href="index_advanced_internals.html">Internal Behavior</a> &raquo;</li>
181
182 <li>Use custom allocators for embedded usage</li>
183
184
185 <li class="wy-breadcrumbs-aside">
186
187
188
189 </li>
190
191 </ul>
192
193
194 <hr/>
195 </div>
196 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
197 <div itemprop="articleBody">
198
199 <div class="section" id="use-custom-allocators-for-embedded-usage">
200 <h1>Use custom allocators for embedded usage<a class="headerlink" href="#use-custom-allocators-for-embedded-usage" title="Permalink to this headline"></a></h1>
201 <p>Manage memory allocator functions</p>
202 <div class="section" id="synopsis">
203 <h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Permalink to this headline"></a></h2>
204 <dl class="simple">
205 <dt>#include &lt;libmemcached/memcached.h&gt;</dt><dd><p>Compile and link with -lmemcached</p>
206 </dd>
207 </dl>
208 <dl class="cpp function">
209 <dt id="_CPPv431memcached_set_memory_allocatorsP12memcached_st19memcached_malloc_fn17memcached_free_fn20memcached_realloc_fn19memcached_calloc_fnPv">
210 <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>
211 <dd></dd></dl>
212
213 <dl class="cpp function">
214 <dt id="_CPPv431memcached_get_memory_allocatorsP12memcached_stP19memcached_malloc_fnP17memcached_free_fnP20memcached_realloc_fnP19memcached_calloc_fn">
215 <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>
216 <dd></dd></dl>
217
218 <dl class="cpp function">
219 <dt id="_CPPv439memcached_get_memory_allocators_contextPK12memcached_st">
220 <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>
221 <dd></dd></dl>
222
223 <dl class="cpp type">
224 <dt id="_CPPv419memcached_malloc_fn">
225 <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>
226 <dd></dd></dl>
227
228 <dl class="cpp type">
229 <dt id="_CPPv420memcached_realloc_fn">
230 <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>
231 <dd></dd></dl>
232
233 <dl class="cpp type">
234 <dt id="_CPPv417memcached_free_fn">
235 <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>
236 <dd></dd></dl>
237
238 <dl class="cpp type">
239 <dt id="_CPPv419memcached_calloc_fn">
240 <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>
241 <dd></dd></dl>
242
243 </div>
244 <div class="section" id="description">
245 <h2>DESCRIPTION<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
246 <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
247 your application. This enables libmemcached to be used inside of applications
248 that have their own malloc implementation.</p>
249 <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
250 used by the memcached instance specified by ptr. Please note that you cannot
251 override only one of the memory allocators, you have to specify a complete new
252 set if you want to override one of them. All of the memory allocation functions
253 should behave as specified in the C99 standard. Specify NULL as all functions to
254 reset them to the default values.</p>
255 <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
256 allocators by a memcached handle.</p>
257 <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
258 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>
259 <p>The first argument to the memory allocator functions is a pointer to a memcached
260 structure, the is passed as const and you will need to clone it in order to make
261 use of any operation which would modify it.</p>
262 </div>
263 <div class="section" id="notes">
264 <h2>NOTES<a class="headerlink" href="#notes" title="Permalink to this headline"></a></h2>
265 <p>In version 0.38 all functions were modified to have a context void pointer
266 passed to them. This was so that customer allocators could have their own space
267 for memory.</p>
268 </div>
269 <div class="section" id="return-value">
270 <h2>RETURN VALUE<a class="headerlink" href="#return-value" title="Permalink to this headline"></a></h2>
271 <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,
272 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>
273 </div>
274 <div class="section" id="see-also">
275 <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h2>
276 <ul class="simple">
277 <li><p><em class="manpage"><a class="manpage reference external" href="https://linux.die.net/man/1/memcached">memcached(1)</a></em></p></li>
278 <li><p><a class="reference internal" href="../libmemcached.html"><span class="doc">C/C++ Client Library for memcached</span></a></p></li>
279 <li><p><a class="reference internal" href="memcached_strerror.html"><span class="doc">Converting Error Codes to Messages</span></a></p></li>
280 </ul>
281 </div>
282 </div>
283
284
285 </div>
286
287 </div>
288 <footer>
289
290 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
291
292 <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>
293
294
295 <a href="memcached_callback.html" class="btn btn-neutral float-left" title="Library callbacks" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
296
297 </div>
298
299
300 <hr/>
301
302 <div role="contentinfo">
303 <p>
304 &copy; <a href="../copyright.html">Copyright</a>
305
306 </p>
307 </div>
308 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>.
309
310 </footer>
311
312 </div>
313 </div>
314
315 </section>
316
317 </div>
318
319
320
321 <script type="text/javascript">
322 jQuery(function () {
323 SphinxRtdTheme.Navigation.enable(true);
324 });
325 </script>
326
327
328
329
330
331
332 </body>
333 </html>