blob: 022848105fccfa3fa36534db1a9cf6b32819f063 [file]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.18.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Constant size allocation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="codefolding.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="mimalloc-doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign">
<div id="projectname">mi-malloc<span id="projectnumber">&#160;3.5/2.5/1.15</span>
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" class="search-icon"><span class="search-icon-dropdown"></span></span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><div id="MSearchCloseImg" class="close-icon"></div></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.18.0 -->
<script type="text/javascript">
let searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', codefold.init);
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded',() => { initNavTree('group__constantsize.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Constant size allocation </div></div>
</div><!--header-->
<div class="contents">
<p>Inlined definitions for onstant size allocation and freeing.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga9cd44d925d34f7180922e12bbf594571" id="r_ga9cd44d925d34f7180922e12bbf594571"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9cd44d925d34f7180922e12bbf594571">mi_malloc_csize</a> (size_t size)</td></tr>
<tr class="memdesc:ga9cd44d925d34f7180922e12bbf594571"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>v3</b>: Allocate a constant size object. <br /></td></tr>
<tr class="separator:ga9cd44d925d34f7180922e12bbf594571"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadca6d340ee15b5c70695ed82d95c6cec" id="r_gadca6d340ee15b5c70695ed82d95c6cec"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gadca6d340ee15b5c70695ed82d95c6cec">mi_zalloc_csize</a> (size_t size)</td></tr>
<tr class="separator:gadca6d340ee15b5c70695ed82d95c6cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga105bd667da91a15d113fe79be04d625c" id="r_ga105bd667da91a15d113fe79be04d625c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga105bd667da91a15d113fe79be04d625c">mi_theap_malloc_csize</a> (<a class="el" href="group__theap.html#ga8722f6ac4f638b4692e06ddfddc844f8">mi_theap_t</a> *theap, size_t size)</td></tr>
<tr class="separator:ga105bd667da91a15d113fe79be04d625c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1addf755829380581dd9c3c9175e376f" id="r_ga1addf755829380581dd9c3c9175e376f"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga1addf755829380581dd9c3c9175e376f">mi_theap_zalloc_csize</a> (<a class="el" href="group__theap.html#ga8722f6ac4f638b4692e06ddfddc844f8">mi_theap_t</a> *theap, size_t size)</td></tr>
<tr class="separator:ga1addf755829380581dd9c3c9175e376f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a421e302074e598527c3eb052a6a3c5" id="r_ga7a421e302074e598527c3eb052a6a3c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7a421e302074e598527c3eb052a6a3c5">mi_free_csize</a> (void *p, size_t size)</td></tr>
<tr class="memdesc:ga7a421e302074e598527c3eb052a6a3c5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>v3</b>: Free a pointer with a known constant size. <br /></td></tr>
<tr class="separator:ga7a421e302074e598527c3eb052a6a3c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38a93d373a9dc8edc8bca83edb6af5c5" id="r_ga38a93d373a9dc8edc8bca83edb6af5c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga38a93d373a9dc8edc8bca83edb6af5c5">mi_free_csize_nonnull</a> (void *p, size_t size)</td></tr>
<tr class="memdesc:ga38a93d373a9dc8edc8bca83edb6af5c5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><b>v3</b>: Free a non-null pointer with a known constant size. <br /></td></tr>
<tr class="separator:ga38a93d373a9dc8edc8bca83edb6af5c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Inlined definitions for onstant size allocation and freeing. </p>
<p>If the size is constant, it can pick statically between <a class="el" href="group__malloc.html#gae1dd97b542420c87ae085e822b1229e8" title="Allocate size bytes.">mi_malloc()</a> and <a class="el" href="group__extended.html#ga7f050bc6b897da82692174f5fce59cde" title="Allocate a small object.">mi_malloc_small()</a>. For example: </p><div class="fragment"><div class="line"><span class="keywordtype">long</span>* p = (<span class="keywordtype">long</span>*)<a class="code hl_function" href="#ga9cd44d925d34f7180922e12bbf594571">mi_malloc_csize</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">long</span>))</div>
<div class="ttc" id="agroup__constantsize_html_ga9cd44d925d34f7180922e12bbf594571"><div class="ttname"><a href="#ga9cd44d925d34f7180922e12bbf594571">mi_malloc_csize</a></div><div class="ttdeci">void * mi_malloc_csize(size_t size)</div><div class="ttdoc">v3: Allocate a constant size object.</div></div>
</div><!-- fragment --><p> On <b>v3</b> these can improve performance. This is especially useful for compilers and runtimes where the the size is often statically known. These functions can be used even when the size is not constant but then there is no performance benefit. </p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="ga7a421e302074e598527c3eb052a6a3c5" name="ga7a421e302074e598527c3eb052a6a3c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7a421e302074e598527c3eb052a6a3c5">&#9670;&#160;</a></span>mi_free_csize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void mi_free_csize </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>v3</b>: Free a pointer with a known constant size. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>The pointer to the allocated block (or <em class="arg">NULL</em> ) </td></tr>
<tr><td class="paramname">size</td><td>The size with which the pointer was allocated. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ga9cd44d925d34f7180922e12bbf594571" title="v3: Allocate a constant size object.">mi_malloc_csize()</a> </dd>
<dd>
<a class="el" href="group__posix.html#gae01389eedab8d67341ff52e2aad80ebb" title="Free a block that was allocated with a known size.">mi_free_size()</a> </dd>
<dd>
<a class="el" href="group__posix.html#ga796602dae2a89797026f72e0c0240f32" title="Free a non-NULL pointer that was allocated with a known size.">mi_free_size_nonnull()</a> </dd></dl>
</div>
</div>
<a id="ga38a93d373a9dc8edc8bca83edb6af5c5" name="ga38a93d373a9dc8edc8bca83edb6af5c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga38a93d373a9dc8edc8bca83edb6af5c5">&#9670;&#160;</a></span>mi_free_csize_nonnull()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void mi_free_csize_nonnull </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>v3</b>: Free a non-null pointer with a known constant size. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>The pointer to the allocated block (cannot be <em class="arg">NULL</em> !) </td></tr>
<tr><td class="paramname">size</td><td>The size with which the pointer was allocated. </td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ga9cd44d925d34f7180922e12bbf594571" title="v3: Allocate a constant size object.">mi_malloc_csize()</a> </dd>
<dd>
<a class="el" href="group__posix.html#gae01389eedab8d67341ff52e2aad80ebb" title="Free a block that was allocated with a known size.">mi_free_size()</a> </dd>
<dd>
<a class="el" href="group__posix.html#ga796602dae2a89797026f72e0c0240f32" title="Free a non-NULL pointer that was allocated with a known size.">mi_free_size_nonnull()</a> </dd></dl>
</div>
</div>
<a id="ga9cd44d925d34f7180922e12bbf594571" name="ga9cd44d925d34f7180922e12bbf594571"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9cd44d925d34f7180922e12bbf594571">&#9670;&#160;</a></span>mi_malloc_csize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_malloc_csize </td>
<td>(</td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><b>v3</b>: Allocate a constant size object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">size</td><td>A (compile-time) constant size. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to an allocated block of size <em>size</em> bytes. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ga7a421e302074e598527c3eb052a6a3c5" title="v3: Free a pointer with a known constant size.">mi_free_csize()</a> </dd>
<dd>
<a class="el" href="group__malloc.html#gae1dd97b542420c87ae085e822b1229e8" title="Allocate size bytes.">mi_malloc()</a> </dd></dl>
</div>
</div>
<a id="ga105bd667da91a15d113fe79be04d625c" name="ga105bd667da91a15d113fe79be04d625c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga105bd667da91a15d113fe79be04d625c">&#9670;&#160;</a></span>mi_theap_malloc_csize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_theap_malloc_csize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__theap.html#ga8722f6ac4f638b4692e06ddfddc844f8">mi_theap_t</a> *</td> <td class="paramname"><span class="paramname"><em>theap</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga1addf755829380581dd9c3c9175e376f" name="ga1addf755829380581dd9c3c9175e376f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1addf755829380581dd9c3c9175e376f">&#9670;&#160;</a></span>mi_theap_zalloc_csize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_theap_zalloc_csize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__theap.html#ga8722f6ac4f638b4692e06ddfddc844f8">mi_theap_t</a> *</td> <td class="paramname"><span class="paramname"><em>theap</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="gadca6d340ee15b5c70695ed82d95c6cec" name="gadca6d340ee15b5c70695ed82d95c6cec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadca6d340ee15b5c70695ed82d95c6cec">&#9670;&#160;</a></span>mi_zalloc_csize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_zalloc_csize </td>
<td>(</td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.18.0 </li>
</ul>
</div>
</body>
</html>