]> granicus.if.org Git - imagemagick/blob - www/api/memory.html
c03d9077549a5d47d821908531c8ddb146b21569
[imagemagick] / www / api / memory.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\r
2     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
4 <head>\r
5   <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U=" />\r
6   <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf" />\r
7   <style type="text/css" media="screen,projection"><!--\r
8     @import url("../../www/magick.css");\r
9   --></style>\r
10   <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"/>
26 </head>\r
27 \r
28 <body id="www-imagemagick-org">\r
29 <div class="titlebar">\r
30 <a href="../../index.html">\r
31   <img src="../../images/script.png" alt="[ImageMagick]"\r
32   style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>\r
33 <a href="http://www.networkredux.com">\r
34   <img src="../../images/networkredux.png" alt="[sponsor]"\r
35   style="margin: 45px auto; border: 0px; float: left;" /></a>\r
36 <a href="http://www.imagemagick.org/discourse-server/">\r
37   <img src="../../images/logo.jpg" alt=""\r
38   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>\r
39 <a href="../../index.html">\r
40   <img src="../../images/sprite.jpg" alt=""\r
41   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>\r
42 </div>\r
43 \r
44 <div class="eastbar">\r
45 \r
46 <div class="menu">
47   <a href="../../index.html">About ImageMagick</a>
48 </div>
49 <div class="sep"></div>\r
50 <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>
80 <div class="sep"></div>\r
81 <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>
105 <div class="sep"></div>\r
106 <div class="menu">
107   <a href="../../www/download.html">Download</a>
108 </div>
109 <div class="sep"></div>\r
110 <div class="menu">
111   <a href="../http://www.imagemagick.org/script/search.php">Search</a>
112 </div>
113 <div class="sep"></div>\r
114 <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>
120 <div class="sep"></div>\r
121 <div  class="menu">
122   <a href="../../www/sponsors.html">Sponsors:</a>
123
124 <div class="sponsbox">
125 <div  class="sponsor">
126    <a href="http://www.buerodruck.de/stempel-service/index.html">Stempel bestellen</a><!-- 200910000035+ -->
127 </div>
128 <div  class="sponsor">
129   <a href="http://www.online-kredit-index.de">Kredit</a><!-- 201003010120 Buchhorn -->
130 </div>
131 <div  class="sponsor">
132   <a href="http://www.print24.de/">Druckerei</a><!-- 201009010720 -->
133 </div>
134 <div  class="sponsor">
135    <a href="http://www.goyax.de">Börse</a><!-- 201001000240 Gewiese digital-finance.de -->
136 </div>
137 <div  class="sponsor">
138    <a href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012001200 allesdruck.de-->
139 </div>
140 <div  class="sponsor">
141   <a href="http://www.blumenversender.com">Blumenversand</a><!-- 200911010120 -->
142 </div>
143 <div  class="sponsor">
144   <a href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 201002010000 -->
145 </div>
146 </div>
147 </div>
148 \r
149 \r
150 </div>\r
151 \r
152 <div class="main">\r
153 \r
154 <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>
399 \r
400 </div>\r
401 \r
402 <div id="linkbar">\r
403  <!--    <span id="linkbar-west">&nbsp;</span>  -->\r
404     <span id="linkbar-center">\r
405       <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;\r
406       <a href="../../www/mailing-list.html">Mailing Lists</a> &bull;\r
407     <a href="http://studio.webbyland.com/ImageMagick/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
408     </span>\r
409     <span id="linkbar-east">&nbsp;</span>\r
410   </div>\r
411   <div class="footer">\r
412     <span id="footer-west">&copy; 1999-2009 ImageMagick Studio LLC</span>\r
413     <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>\r
414   </div>\r
415   <div style="clear: both; margin: 0; width: 100%; "></div>\r
416 </body>\r
417 </html>\r