| Current File : //usr/local/share/doc/ImageMagick-6/www/api/memory.html |
<!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>