<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta> <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4"></meta> <title>ImageMagick: MagickCore, C API for ImageMagick: Memory Allocation</title> <meta http-equiv="content-language" content="en-US"></meta> <meta http-equiv="content-type" content="text/html; charset=utf-8"></meta> <meta http-equiv="reply-to" content="magick-users@imagemagick.org"></meta> <meta name="application-name" content="ImageMagick"></meta> <meta name="description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats. In addition, resize, rotate, shear, distort or transform images automagically."></meta> <meta name="application-url" content="http://www.imagemagick.org"></meta> <meta name="generator" content="PHP"></meta> <meta name="keywords" content="magickcore, c, api, for, imagemagick:, memory, allocation, ImageMagick, PerlMagick, image processing, OpenMP, software development library, image, photo, software, Magick++, MagickWand"></meta> <meta name="rating" content="GENERAL"></meta> <meta name="robots" content="INDEX, FOLLOW"></meta> <meta name="generator" content="ImageMagick Studio LLC"></meta> <meta name="author" content="ImageMagick Studio LLC"></meta> <meta name="revisit-after" content="2 DAYS"></meta> <meta name="resource-type" content="document"></meta> <meta name="copyright" content="Copyright (c) 1999-2012 ImageMagick Studio LLC"></meta> <meta name="distribution" content="Global"></meta> <link rel="icon" href="../../images/wand.png"></link> <link rel="shortcut icon" href="../../images/wand.ico" type="images/x-icon"></link> <link rel="canonical" href="../../index.html"></link> <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"></link> <!-- Add jQuery library --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> <!-- Add mousewheel plugin (this is optional) --> <script type="text/javascript" src="http://www.imagemagick.org/fancybox/lib/jquery.mousewheel-3.0.6.pack.js"></script> <!-- Add fancyBox --> <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/jquery.fancybox.css?v=2.0.6" type="text/css" media="screen"></link> <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/jquery.fancybox.pack.js?v=2.0.6"></script> <!-- Optionally add helpers - button, thumbnail and/or media --> <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.css?v=1.0.2" type="text/css" media="screen"></link> <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.js?v=1.0.2"></script> <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.0"></script> <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.css?v=2.0.6" type="text/css" media="screen"></link> <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=2.0.6"></script> <script type="text/javascript"> $(document).ready(function() { $(".fancybox").fancybox(); }); </script> <!-- ImageMagick style --> <style type="text/css" media="all"> @import url("../../www/magick.css"); </style> </head> <body id="www-imagemagick-org"> <div class="titlebar"> <div style="margin: 17px auto; float: left;"> <script type="text/javascript"> <!-- google_ad_client = "pub-3129977114552745"; google_ad_slot = "5439289906"; google_ad_width = 728; google_ad_height = 90; //--> </script> </div> <a href="../../discourse-server"> <img src="../../images/logo.jpg" alt="ImageMagick Logo" style="width: 123px; height: 118px; border: 0px; float: right;"></img></a> <a href="../../index.html"> <img src="../../images/sprite.jpg" alt="ImageMagick Sprite" style="width: 114px; height: 118px; border: 0px; float: right;"></img></a> </div> <div class="westbar"> <div class="menu"> <a title="About ImageMagick" href="../../index.html">About ImageMagick</a> </div> <div class="menu"> <a title="Binary Releases" href="../../www/binary-releases.html">Binary Releases</a> </div> <div class="sub"> <a title="Binary Release: Unix" href="../../www/binary-releases.html#unix">Unix</a> </div> <div class="sub"> <a title="Binary Release: MacOS X" href="../../www/binary-releases.html#macosx">Mac OS X</a> </div> <div class="sub"> <a title="Binary Release: iOS" href="../../www/binary-releases.html#iOS">iOS</a> </div> <div class="sub"> <a title="Binary Release: Windows" href="../../www/binary-releases.html#windows">Windows</a> </div> <div class="sep"></div> <div class="menu"> <a title="Command-line Tools" href="../../www/command-line-tools.html">Command-line Tools</a> </div> <div class="sub"> <a title="Command-line Tools: Processing" href="../../www/command-line-processing.html">Processing</a> </div> <div class="sub"> <a title="Command-line Tools: Options" href="../../www/command-line-options.html">Options</a> </div> <div class="sub"> <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a> </div> <div class="menu"> <a title="Program Interfaces" href="../../www/api.html">Program Interfaces</a> </div> <div class="sub"> <a title="Program Interface: MagickWand" href="../../www/magick-wand.html">MagickWand</a> </div> <div class="sub"> <a title="Program Interface: MagickCore" href="../../www/magick-core.html">MagickCore</a> </div> <div class="sub"> <a title="Program Interface: PerlMagick" href="../../www/perl-magick.html">PerlMagick</a> </div> <div class="sub"> <a title="Program Interface: Magick++" href="../../www/magick++.html">Magick++</a> </div> <div class="sep"></div> <div class="menu"> <a title="Install from Source" href="../../www/install-source.html">Install from Source</a> </div> <div class="sub"> <a title="Install from Source: Unix" href="../../www/install-source.html#unix">Unix</a> </div> <div class="sub"> <a title="Install from Source: Windows" href="../../www/install-source.html#windows">Windows</a> </div> <div class="menu"> <a title="Resources" href="../../www/resources.html">Resources</a> </div> <div class="menu"> <a title="Architecture" href="../../www/architecture.html">Architecture</a> </div> <div class="menu"> <a title="Download" href="../../www/download.html">Download</a> </div> <div class="sep"></div> <div class="menu"> <a title="Search" href="http://www.imagemagick.org/script/search.php">Search</a> </div> <div class="sep"></div> <div class="menu"> <a title="Site Map" href="../../www/sitemap.html">Site Map</a> </div> <div class="sub"> <a title="Site Map: Links" href="../../www/links.html">Links</a> </div> <div class="sep"></div> <div class="menu"> <a title="Support ImageMagick Development" href="../../www/support.html">Support ImageMagick Development</a> </div> </div> <div class="eastbar"> <div> <a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="../../index.html"></a></div> <noscript> <a href="http://flattr.com/thing/947300/Convert-Edit-And-Compose-Images" target="_blank"> <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" width="93" height="20" border="0"></img></a> </noscript> </div> <div class="main"> <h1>Module memory Methods</h1> <p class="navigation-index">[<a href="memory.html#AcquireAlignedMemory">AcquireAlignedMemory</a> • <a href="memory.html#AcquireMagickMemory">AcquireMagickMemory</a> • <a href="memory.html#AcquireQuantumMemory">AcquireQuantumMemory</a> • <a href="memory.html#AcquireVirtualMemory">AcquireVirtualMemory</a> • <a href="memory.html#CopyMagickMemory">CopyMagickMemory</a> • <a href="memory.html#GetMagickMemoryMethods">GetMagickMemoryMethods</a> • <a href="memory.html#GetVirtualMemoryBlob">GetVirtualMemoryBlob</a> • <a href="memory.html#RelinquishAlignedMemory">RelinquishAlignedMemory</a> • <a href="memory.html#RelinquishMagickMemory">RelinquishMagickMemory</a> • <a href="memory.html#RelinquishVirtualMemory">RelinquishVirtualMemory</a> • <a href="memory.html#ResetMagickMemory">ResetMagickMemory</a> • <a href="memory.html#ResizeMagickMemory">ResizeMagickMemory</a> • <a href="memory.html#ResizeQuantumMemory">ResizeQuantumMemory</a> • <a href="memory.html#SetMagickMemoryMethods">SetMagickMemoryMethods</a>]</p> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="AcquireAlignedMemory">AcquireAlignedMemory</a></h2> <div class="doc-section"> <p>AcquireAlignedMemory() returns a pointer to a block of memory at least size bytes whose address is a multiple of 16*sizeof(void *).</p> <p>The format of the AcquireAlignedMemory method is:</p> <pre class="code"> void *AcquireAlignedMemory(const size_t count,const size_t quantum) </pre> <p>A description of each parameter follows:</p> <h5>count</h5> <p>the number of quantum elements to allocate.</p> <h5>quantum</h5> <p>the number of bytes in each quantum.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="AcquireMagickMemory">AcquireMagickMemory</a></h2> <div class="doc-section"> <p>AcquireMagickMemory() returns a pointer to a block of memory at least size bytes suitably aligned for any use.</p> <p>The format of the AcquireMagickMemory method is:</p> <pre class="code"> void *AcquireMagickMemory(const size_t size) </pre> <p>A description of each parameter follows:</p> <h5>size</h5> <p>the size of the memory in bytes to allocate.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="AcquireQuantumMemory">AcquireQuantumMemory</a></h2> <div class="doc-section"> <p>AcquireQuantumMemory() returns a pointer to a block of memory at least count * quantum bytes suitably aligned for any use.</p> <p>The format of the AcquireQuantumMemory method is:</p> <pre class="code"> void *AcquireQuantumMemory(const size_t count,const size_t quantum) </pre> <p>A description of each parameter follows:</p> <h5>count</h5> <p>the number of quantum elements to allocate.</p> <h5>quantum</h5> <p>the number of bytes in each quantum.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="AcquireVirtualMemory">AcquireVirtualMemory</a></h2> <div class="doc-section"> <p>AcquireVirtualMemory() allocates a pointer to a block of memory at least size bytes suitably aligned for any use.</p> <p>The format of the AcquireVirtualMemory method is:</p> <pre class="code"> MemoryInfo *AcquireVirtualMemory(const size_t count,const size_t quantum) </pre> <p>A description of each parameter follows:</p> <h5>count</h5> <p>the number of quantum elements to allocate.</p> <h5>quantum</h5> <p>the number of bytes in each quantum.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="CopyMagickMemory">CopyMagickMemory</a></h2> <div class="doc-section"> <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> <p>The format of the CopyMagickMemory method is:</p> <pre class="code"> void *CopyMagickMemory(void *destination,const void *source, const size_t size) </pre> <p>A description of each parameter follows:</p> <h5>destination</h5> <p>the destination.</p> <h5>source</h5> <p>the source.</p> <h5>size</h5> <p>the size of the memory in bytes to allocate.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="GetMagickMemoryMethods">GetMagickMemoryMethods</a></h2> <div class="doc-section"> <p>GetMagickMemoryMethods() gets the methods to acquire, resize, and destroy memory.</p> <p>The format of the GetMagickMemoryMethods() method is:</p> <pre class="code"> void GetMagickMemoryMethods(AcquireMemoryHandler *acquire_memory_handler, ResizeMemoryHandler *resize_memory_handler, DestroyMemoryHandler *destroy_memory_handler) </pre> <p>A description of each parameter follows:</p> <h5>acquire_memory_handler</h5> <p>method to acquire memory (e.g. malloc).</p> <h5>resize_memory_handler</h5> <p>method to resize memory (e.g. realloc).</p> <h5>destroy_memory_handler</h5> <p>method to destroy memory (e.g. free).</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="GetVirtualMemoryBlob">GetVirtualMemoryBlob</a></h2> <div class="doc-section"> <p>GetVirtualMemoryBlob() returns the virtual memory blob associated with the specified MemoryInfo structure.</p> <p>The format of the GetVirtualMemoryBlob method is:</p> <pre class="code"> void *GetVirtualMemoryBlob(const MemoryInfo *memory_info) </pre> <p>A description of each parameter follows:</p> <h5>memory_info</h5> <p>The MemoryInfo structure. </p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="RelinquishAlignedMemory">RelinquishAlignedMemory</a></h2> <div class="doc-section"> <p>RelinquishAlignedMemory() frees memory acquired with AcquireAlignedMemory() or reuse.</p> <p>The format of the RelinquishAlignedMemory method is:</p> <pre class="code"> void *RelinquishAlignedMemory(void *memory) </pre> <p>A description of each parameter follows:</p> <h5>memory</h5> <p>A pointer to a block of memory to free for reuse.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="RelinquishMagickMemory">RelinquishMagickMemory</a></h2> <div class="doc-section"> <p>RelinquishMagickMemory() frees memory acquired with AcquireMagickMemory() or AcquireQuantumMemory() for reuse.</p> <p>The format of the RelinquishMagickMemory method is:</p> <pre class="code"> void *RelinquishMagickMemory(void *memory) </pre> <p>A description of each parameter follows:</p> <h5>memory</h5> <p>A pointer to a block of memory to free for reuse.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="RelinquishVirtualMemory">RelinquishVirtualMemory</a></h2> <div class="doc-section"> <p>RelinquishVirtualMemory() frees memory acquired with AcquireVirtualMemory().</p> <p>The format of the RelinquishVirtualMemory method is:</p> <pre class="code"> MemoryInfo *RelinquishVirtualMemory(MemoryInfo *memory_info) </pre> <p>A description of each parameter follows:</p> <h5>memory_info</h5> <p>A pointer to a block of memory to free for reuse.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="ResetMagickMemory">ResetMagickMemory</a></h2> <div class="doc-section"> <p>ResetMagickMemory() fills the first size bytes of the memory area pointed to by memory with the constant byte c.</p> <p>The format of the ResetMagickMemory method is:</p> <pre class="code"> void *ResetMagickMemory(void *memory,int byte,const size_t size) </pre> <p>A description of each parameter follows:</p> <h5>memory</h5> <p>a pointer to a memory allocation.</p> <h5>byte</h5> <p>set the memory to this value.</p> <h5>size</h5> <p>size of the memory to reset.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="ResizeMagickMemory">ResizeMagickMemory</a></h2> <div class="doc-section"> <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> <p>The format of the ResizeMagickMemory method is:</p> <pre class="code"> void *ResizeMagickMemory(void *memory,const size_t size) </pre> <p>A description of each parameter follows:</p> <h5>memory</h5> <p>A pointer to a memory allocation.</p> <h5>size</h5> <p>the new size of the allocated memory.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="ResizeQuantumMemory">ResizeQuantumMemory</a></h2> <div class="doc-section"> <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> <p>The format of the ResizeQuantumMemory method is:</p> <pre class="code"> void *ResizeQuantumMemory(void *memory,const size_t count, const size_t quantum) </pre> <p>A description of each parameter follows:</p> <h5>memory</h5> <p>A pointer to a memory allocation.</p> <h5>count</h5> <p>the number of quantum elements to allocate.</p> <h5>quantum</h5> <p>the number of bytes in each quantum.</p> </div> <h2><a href="http://www.imagemagick.org/api/MagickCore/memory_8c.html" id="SetMagickMemoryMethods">SetMagickMemoryMethods</a></h2> <div class="doc-section"> <p>SetMagickMemoryMethods() sets the methods to acquire, resize, and destroy memory. Your custom memory methods must be set prior to the MagickCoreGenesis() method.</p> <p>The format of the SetMagickMemoryMethods() method is:</p> <pre class="code"> SetMagickMemoryMethods(AcquireMemoryHandler acquire_memory_handler, ResizeMemoryHandler resize_memory_handler, DestroyMemoryHandler destroy_memory_handler) </pre> <p>A description of each parameter follows:</p> <h5>acquire_memory_handler</h5> <p>method to acquire memory (e.g. malloc).</p> <h5>resize_memory_handler</h5> <p>method to resize memory (e.g. realloc).</p> <h5>destroy_memory_handler</h5> <p>method to destroy memory (e.g. free).</p> </div> </div> <div id="linkbar"> <span id="linkbar-west"> </span> <span id="linkbar-center"> <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> • <a href="../../discourse-server">Discourse Server</a> • <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a> • <a href="http://jqmagick.imagemagick.org/">JqMagick</a> </span> <span id="linkbar-east"> </span> </div> <div class="footer"> <span id="footer-west">© 1999-2013 ImageMagick Studio LLC</span> <span id="footer-east"> <a href="../../www/contact.html">Contact the Wizards</a></span> </div> <div style="clear: both; margin: 0; width: 100%; "></div> </body> </html>