blob: 5f8226b3f101affab53daf421f99bdc79f92281a [file] [log] [blame]
cristyf3bb4782009-09-08 13:10:04 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4<head>
5 <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U=" />
6 <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf" />
7 <style type="text/css" media="screen,projection"><!--
8 @import url("../../www/magick.css");
9 --></style>
cristy3ed852e2009-09-05 21:47:34 +000010 <link rel="shortcut icon" href="../../images/wand.ico" type="images/vnd.microsoft.icon"/>
11 <title>ImageMagick: MagickCore, C API for ImageMagick: Memory Allocation</title>
12 <meta http-equiv="Content-Language" content="en-US"/>
13 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
14 <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
15 <meta name="Generator" content="PHP"/>
16 <meta name="Keywords" content="magickcore, c, api, for, imagemagick:, memory, allocation, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
17 <meta name="Description" content="ImageMagick® is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (about 100) including GIF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, TIFF, and DPX. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves. ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems. The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite programming language. Choose from these interfaces: MagickCore (C), MagickWand (C), ChMagick (Ch), Magick++ (C++), JMagick (Java), L-Magick (Lisp), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images automagically and dynamically."/>
18 <meta name="Rating" content="GENERAL"/>
19 <meta name="Robots" content="INDEX, FOLLOW"/>
20 <meta name="Generator" content="ImageMagick Studio LLC"/>
21 <meta name="Author" content="ImageMagick Studio LLC"/>
22 <meta name="Revisit-after" content="2 DAYS"/>
23 <meta name="Resource-type" content="document"/>
24 <meta name="Copyright" content="Copyright (c) 1999-2009 ImageMagick Studio LLC"/>
25 <meta name="Distribution" content="Global"/>
cristyf3bb4782009-09-08 13:10:04 +000026</head>
27
28<body id="www-imagemagick-org">
29<div class="titlebar">
30<a href="../../index.html">
31 <img src="../../images/script.png" alt="[ImageMagick]"
32 style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
33<a href="http://www.networkredux.com">
34 <img src="../../images/networkredux.png" alt="[sponsor]"
35 style="margin: 45px auto; border: 0px; float: left;" /></a>
36<a href="http://www.imagemagick.org/discourse-server/">
37 <img src="../../images/logo.jpg" alt=""
38 style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
39<a href="../../index.html">
40 <img src="../../images/sprite.jpg" alt=""
41 style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
42</div>
43
44<div class="eastbar">
45
cristy3ed852e2009-09-05 21:47:34 +000046<div class="menu">
47 <a href="../../index.html">About ImageMagick</a>
48</div>
cristyf3bb4782009-09-08 13:10:04 +000049<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +000050<div class="menu">
51 <a href="../../www/command-line-tools.html">Command-line Tools</a>
52</div>
53<div class="sub">
54 <a href="../../www/command-line-processing.html">Processing</a>
55</div>
56<div class="sub">
57 <a href="../../www/command-line-options.html">Options</a>
58</div>
59<div class="sub">
60 <a href="http://www.imagemagick.org/Usage/">Usage</a>
61</div>
62<div class="menu">
63 <a href="../../www/api.html">Program Interfaces</a>
64</div>
65<div class="sub">
66 <a href="../../www/magick-wand.html">MagickWand</a>
67</div>
68<div class="sub">
69 <a href="../../www/magick-core.html">MagickCore</a>
70</div>
71<div class="sub">
72 <a href="../../www/perl-magick.html">PerlMagick</a>
73</div>
74<div class="sub">
75 <a href="../../Magick++/">Magick++</a>
76</div>
77<div class="menu">
78 <a href="../../www/architecture.html">Architecture</a>
79</div>
cristyf3bb4782009-09-08 13:10:04 +000080<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +000081<div class="menu">
82 <a href="../../www/install-source.html">Install from Source</a>
83</div>
84<div class="sub">
85 <a href="../../www/install-source.html#unix">Unix</a>
86</div>
87<div class="sub">
88 <a href="../../www/install-source.html#windows">Windows</a>
89 </div>
90<div class="menu">
91 <a href="../../www/binary-releases.html">Binary Releases</a>
92</div>
93<div class="sub">
94 <a href="../../www/binary-releases.html#unix">Unix</a>
95</div>
96<div class="sub">
97 <a href="../../www/binary-releases.html#macosx">Mac OS X</a>
98</div>
99<div class="sub">
100 <a href="../../www/binary-releases.html#windows">Windows</a>
101</div>
102<div class="menu">
103 <a href="../../www/resources.html">Resources</a>
104</div>
cristyf3bb4782009-09-08 13:10:04 +0000105<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000106<div class="menu">
107 <a href="../../www/download.html">Download</a>
108</div>
cristyf3bb4782009-09-08 13:10:04 +0000109<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000110<div class="menu">
111 <a href="../http://www.imagemagick.org/script/search.php">Search</a>
112</div>
cristyf3bb4782009-09-08 13:10:04 +0000113<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000114<div class="menu">
115 <a href="../../www/sitemap.html">Site Map</a>
116</div>
117<div class="sub">
118 <a href="../../www/links.html">Links</a>
119</div>
cristyf3bb4782009-09-08 13:10:04 +0000120<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000121<div class="menu">
122 <a href="../../www/sponsors.html">Sponsors:</a>
123
124<div class="sponsbox">
125<div class="sponsor">
cristyc1c61662009-09-30 14:04:37 +0000126 <a href="http://www.abi-stoff.de/abizeitung/" title="Abibuch">Abizeitung</a><!-- 20090501000200 -->
127</div>
128<div class="sponsor">
cristyb4c03bb2009-09-27 13:55:46 +0000129 <a href="http://www.print24.de/">Druckerei</a><!-- 201009010720 -->
130</div>
131<div class="sponsor">
cristyf3bb4782009-09-08 13:10:04 +0000132 <a href="http://www.goyax.de">Börse</a><!-- 201001000240 Gewiese digital-finance.de -->
cristy3ed852e2009-09-05 21:47:34 +0000133</div>
134<div class="sponsor">
135 <a href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012001200 allesdruck.de-->
136</div>
137<div class="sponsor">
138 <a href="http://www.blumenversender.com">Blumenversand</a><!-- 200911010120 -->
139</div>
140<div class="sponsor">
cristy3ed852e2009-09-05 21:47:34 +0000141 <a href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 201002010000 -->
142</div>
143<div class="sponsor">
cristyf3bb4782009-09-08 13:10:04 +0000144 <a href="http://www.online-kredit-index.de">Kredit</a><!-- 201002010120 Buchhorn -->
cristy3ed852e2009-09-05 21:47:34 +0000145</div>
146</div>
147</div>
cristyf3bb4782009-09-08 13:10:04 +0000148
149
150</div>
151
152<div class="main">
153
cristy3ed852e2009-09-05 21:47:34 +0000154<p class="navigation-index">[<a href="#AcquireAlignedMemory">AcquireAlignedMemory</a> &bull; <a href="#AcquireMagickMemory">AcquireMagickMemory</a> &bull; <a href="#AcquireQuantumMemory">AcquireQuantumMemory</a> &bull; <a href="#CopyMagickMemory">CopyMagickMemory</a> &bull; <a href="#GetMagickMemoryMethods">GetMagickMemoryMethods</a> &bull; <a href="#RelinquishAlignedMemory">RelinquishAlignedMemory</a> &bull; <a href="#RelinquishMagickMemory">RelinquishMagickMemory</a> &bull; <a href="#ResetMagickMemory">ResetMagickMemory</a> &bull; <a href="#ResizeMagickMemory">ResizeMagickMemory</a> &bull; <a href="#ResizeQuantumMemory">ResizeQuantumMemory</a> &bull; <a href="#SetMagickMemoryMethods">SetMagickMemoryMethods</a>]</p>
155
156<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
157_8c.html" target="source" name="AcquireAlignedMemory">AcquireAlignedMemory</a></h2>
158<div class="doc-section">
159
160<p>AcquireAlignedMemory() returns a pointer to a block of memory at least size bytes whose address is a multiple of 16*sizeof(void *).</p></ol>
161
162<p>The format of the AcquireAlignedMemory method is:</p>
163
164<pre class="code">
165 void *AcquireAlignedMemory(const size_t count,const size_t quantum)
166</pre>
167
168<p>A description of each parameter follows:</p></ol>
169
170<h5>count</h5>
171<ol><p>the number of quantum elements to allocate.</p></ol>
172
173<h5>quantum</h5>
174<ol><p>the number of bytes in each quantum.</p></ol>
175
176 </div>
177<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
178_8c.html" target="source" name="AcquireMagickMemory">AcquireMagickMemory</a></h2>
179<div class="doc-section">
180
181<p>AcquireMagickMemory() returns a pointer to a block of memory at least size bytes suitably aligned for any use.</p></ol>
182
183<p>The format of the AcquireMagickMemory method is:</p>
184
185<pre class="code">
186 void *AcquireMagickMemory(const size_t size)
187</pre>
188
189<p>A description of each parameter follows:</p></ol>
190
191<h5>size</h5>
192<ol><p>the size of the memory in bytes to allocate.</p></ol>
193
194 </div>
195<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
196_8c.html" target="source" name="AcquireQuantumMemory">AcquireQuantumMemory</a></h2>
197<div class="doc-section">
198
199<p>AcquireQuantumMemory() returns a pointer to a block of memory at least count * quantum bytes suitably aligned for any use.</p></ol>
200
201<p>The format of the AcquireQuantumMemory method is:</p>
202
203<pre class="code">
204 void *AcquireQuantumMemory(const size_t count,const size_t quantum)
205</pre>
206
207<p>A description of each parameter follows:</p></ol>
208
209<h5>count</h5>
210<ol><p>the number of quantum elements to allocate.</p></ol>
211
212<h5>quantum</h5>
213<ol><p>the number of bytes in each quantum.</p></ol>
214
215 </div>
216<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
217_8c.html" target="source" name="CopyMagickMemory">CopyMagickMemory</a></h2>
218<div class="doc-section">
219
220<p>CopyMagickMemory() copies size bytes from memory area source to the destination. Copying between objects that overlap will take place correctly. It returns destination.</p></ol>
221
222<p>The format of the CopyMagickMemory method is:</p>
223
224<pre class="code">
225 void *CopyMagickMemory(void *destination,const void *source,
226 const size_t size)
227</pre>
228
229<p>A description of each parameter follows:</p></ol>
230
231<h5>destination</h5>
232<ol><p>the destination.</p></ol>
233
234<h5>source</h5>
235<ol><p>the source.</p></ol>
236
237<h5>size</h5>
238<ol><p>the size of the memory in bytes to allocate.</p></ol>
239
240 </div>
241<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
242_8c.html" target="source" name="GetMagickMemoryMethods">GetMagickMemoryMethods</a></h2>
243<div class="doc-section">
244
245<p>GetMagickMemoryMethods() gets the methods to acquire, resize, and destroy memory.</p></ol>
246
247<p>The format of the GetMagickMemoryMethods() method is:</p>
248
249<pre class="code">
250 void GetMagickMemoryMethods(AcquireMemoryHandler *acquire_memory_handler,
251 ResizeMemoryHandler *resize_memory_handler,
252 DestroyMemoryHandler *destroy_memory_handler)
253</pre>
254
255<p>A description of each parameter follows:</p></ol>
256
257<h5>acquire_memory_handler</h5>
258<ol><p>method to acquire memory (e.g. malloc).</p></ol>
259
260<h5>resize_memory_handler</h5>
261<ol><p>method to resize memory (e.g. realloc).</p></ol>
262
263<h5>destroy_memory_handler</h5>
264<ol><p>method to destroy memory (e.g. free).</p></ol>
265
266 </div>
267<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
268_8c.html" target="source" name="RelinquishAlignedMemory">RelinquishAlignedMemory</a></h2>
269<div class="doc-section">
270
271<p>RelinquishAlignedMemory() frees memory acquired with AcquireAlignedMemory() or reuse.</p></ol>
272
273<p>The format of the RelinquishAlignedMemory method is:</p>
274
275<pre class="code">
276 void *RelinquishAlignedMemory(void *memory)
277</pre>
278
279<p>A description of each parameter follows:</p></ol>
280
281<h5>memory</h5>
282<ol><p>A pointer to a block of memory to free for reuse.</p></ol>
283
284 </div>
285<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
286_8c.html" target="source" name="RelinquishMagickMemory">RelinquishMagickMemory</a></h2>
287<div class="doc-section">
288
289<p>RelinquishMagickMemory() frees memory acquired with AcquireMagickMemory() or AcquireQuantumMemory() for reuse.</p></ol>
290
291<p>The format of the RelinquishMagickMemory method is:</p>
292
293<pre class="code">
294 void *RelinquishMagickMemory(void *memory)
295</pre>
296
297<p>A description of each parameter follows:</p></ol>
298
299<h5>memory</h5>
300<ol><p>A pointer to a block of memory to free for reuse.</p></ol>
301
302 </div>
303<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
304_8c.html" target="source" name="ResetMagickMemory">ResetMagickMemory</a></h2>
305<div class="doc-section">
306
307<p>ResetMagickMemory() fills the first size bytes of the memory area pointed to by memory with the constant byte c.</p></ol>
308
309<p>The format of the ResetMagickMemory method is:</p>
310
311<pre class="code">
312 void *ResetMagickMemory(void *memory,int byte,const size_t size)
313</pre>
314
315<p>A description of each parameter follows:</p></ol>
316
317<h5>memory</h5>
318<ol><p>A pointer to a memory allocation.</p></ol>
319
320<h5>byte</h5>
321<ol><p>Set the memory to this value.</p></ol>
322
323<h5>size</h5>
324<ol><p>Size of the memory to reset.</p></ol>
325
326 </div>
327<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
328_8c.html" target="source" name="ResizeMagickMemory">ResizeMagickMemory</a></h2>
329<div class="doc-section">
330
331<p>ResizeMagickMemory() changes the size of the memory and returns a pointer to the (possibly moved) block. The contents will be unchanged up to the lesser of the new and old sizes.</p></ol>
332
333<p>The format of the ResizeMagickMemory method is:</p>
334
335<pre class="code">
336 void *ResizeMagickMemory(void *memory,const size_t size)
337</pre>
338
339<p>A description of each parameter follows:</p></ol>
340
341<h5>memory</h5>
342<ol><p>A pointer to a memory allocation.</p></ol>
343
344<h5>size</h5>
345<ol><p>the new size of the allocated memory.</p></ol>
346
347 </div>
348<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
349_8c.html" target="source" name="ResizeQuantumMemory">ResizeQuantumMemory</a></h2>
350<div class="doc-section">
351
352<p>ResizeQuantumMemory() changes the size of the memory and returns a pointer to the (possibly moved) block. The contents will be unchanged up to the lesser of the new and old sizes.</p></ol>
353
354<p>The format of the ResizeQuantumMemory method is:</p>
355
356<pre class="code">
357 void *ResizeQuantumMemory(void *memory,const size_t count,
358 const size_t quantum)
359</pre>
360
361<p>A description of each parameter follows:</p></ol>
362
363<h5>memory</h5>
364<ol><p>A pointer to a memory allocation.</p></ol>
365
366<h5>count</h5>
367<ol><p>the number of quantum elements to allocate.</p></ol>
368
369<h5>quantum</h5>
370<ol><p>the number of bytes in each quantum.</p></ol>
371
372 </div>
373<h2><a href="http://www.imagemagick.org/api/MagickCore/memory
374_8c.html" target="source" name="SetMagickMemoryMethods">SetMagickMemoryMethods</a></h2>
375<div class="doc-section">
376
377<p>SetMagickMemoryMethods() sets the methods to acquire, resize, and destroy memory.</p></ol>
378
379<p>The format of the SetMagickMemoryMethods() method is:</p>
380
381<pre class="code">
382 SetMagickMemoryMethods(AcquireMemoryHandler acquire_memory_handler,
383 ResizeMemoryHandler resize_memory_handler,
384 DestroyMemoryHandler destroy_memory_handler)
385</pre>
386
387<p>A description of each parameter follows:</p></ol>
388
389<h5>acquire_memory_handler</h5>
390<ol><p>method to acquire memory (e.g. malloc).</p></ol>
391
392<h5>resize_memory_handler</h5>
393<ol><p>method to resize memory (e.g. realloc).</p></ol>
394
395<h5>destroy_memory_handler</h5>
396<ol><p>method to destroy memory (e.g. free).</p></ol>
397
398 </div>
cristyf3bb4782009-09-08 13:10:04 +0000399
400</div>
401
402<div id="linkbar">
403 <!-- <span id="linkbar-west">&nbsp;</span> -->
404 <span id="linkbar-center">
405 <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
406 <a href="../../www/mailing-list.html">Mailing Lists</a> &bull;
cristyb4c03bb2009-09-27 13:55:46 +0000407 <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
cristyf3bb4782009-09-08 13:10:04 +0000408 </span>
409 <span id="linkbar-east">&nbsp;</span>
410 </div>
411 <div class="footer">
412 <span id="footer-west">&copy; 1999-2009 ImageMagick Studio LLC</span>
413 <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
414 </div>
415 <div style="clear: both; margin: 0; width: 100%; "></div>
416</body>
417</html>