Files
dl/document/html/dl__memory__pool_8h.html
T
2026-09-16 14:07:40 +08:00

236 lines
12 KiB
HTML
Vendored

<!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="zh">
<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.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>dl: D:/dl/dl/memory/dl_memory_pool.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<link href="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="projectalign">
<div id="projectname">dl
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.13.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','搜索',false);
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_17297ffb27ce571941f5fb5008f01a1f.html">dl</a></li><li class="navelem"><a class="el" href="dir_880cbdb7e19477dab0ac315d644729fb.html">memory</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes"></a> &#124;
<a href="#namespaces">命名空间</a> &#124;
<a href="#func-members">函数</a> &#124;
<a href="#var-members">变量</a> </div>
<div class="headertitle"><div class="title">dl_memory_pool.h 文件参考</div></div>
</div><!--header-->
<div class="contents">
<p>基于引用计数的内存池
<a href="#details">更多...</a></p>
<div class="textblock"><code>#include &lt;list&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
<code>#include &lt;cstdlib&gt;</code><br />
<code>#include &quot;<a class="el" href="dl__log_8h_source.html">io/dl_log.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dl__math_8h_source.html">math/dl_math.h</a>&quot;</code><br />
</div>
<p><a href="dl__memory__pool_8h_source.html">浏览该文件的源代码.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdl_1_1_gc_ref_info.html">dl::GcRefInfo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdl_1_1_g_c.html">dl::GC&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">引用计数对象,通过get_gc函数创建 <a href="classdl_1_1_g_c.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdl_1_1_pool_list.html">dl::PoolList&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">内存池数据 <a href="classdl_1_1_pool_list.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdl_1_1_memory_pool.html">dl::MemoryPool</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">内存池 <a href="classdl_1_1_memory_pool.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
命名空间</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedl.html">dl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a106e7fc6f72449d977852f2771eddcda" id="r_a106e7fc6f72449d977852f2771eddcda"><td class="memTemplParams" colspan="2">template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename... Args&gt; </td></tr>
<tr class="memitem:a106e7fc6f72449d977852f2771eddcda"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacedl.html#a106e7fc6f72449d977852f2771eddcda">dl::get_gc</a> (Args &amp;&amp;...args)</td></tr>
<tr class="memdesc:a106e7fc6f72449d977852f2771eddcda"><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个GC变量(引用计数内存池) <br /></td></tr>
<tr class="separator:a106e7fc6f72449d977852f2771eddcda"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
变量</h2></td></tr>
<tr class="memitem:ad6bd092b3e266aa0935d7e5b16c6230e" id="r_ad6bd092b3e266aa0935d7e5b16c6230e"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad6bd092b3e266aa0935d7e5b16c6230e">OUTPUT_DEBUG</a> = true</td></tr>
<tr class="separator:ad6bd092b3e266aa0935d7e5b16c6230e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a020806b9ca69ce6d6d50205576feb741" id="r_a020806b9ca69ce6d6d50205576feb741"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a020806b9ca69ce6d6d50205576feb741">OUTPUT_ADD</a> = true</td></tr>
<tr class="separator:a020806b9ca69ce6d6d50205576feb741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5bc91b0e910898584fd4497c943359f" id="r_aa5bc91b0e910898584fd4497c943359f"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa5bc91b0e910898584fd4497c943359f">OUTPUT_MOVE</a> = false</td></tr>
<tr class="separator:aa5bc91b0e910898584fd4497c943359f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e264ff1dd19be77f7a3852965bad1c8" id="r_a1e264ff1dd19be77f7a3852965bad1c8"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1e264ff1dd19be77f7a3852965bad1c8">OUTPUT_STACK</a> = false</td></tr>
<tr class="separator:a1e264ff1dd19be77f7a3852965bad1c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>基于引用计数的内存池 </p>
<dl class="section version"><dt>版本</dt><dd>1.0 </dd></dl>
<dl class="section author"><dt>作者</dt><dd>lveyou </dd></dl>
<dl class="section date"><dt>日期</dt><dd>21-08-30</dd></dl>
<dl class="section note"><dt>注解</dt><dd>内存池修改为维护1个free列表和1个used列表 </dd>
<dd>
定期将used列表引用计数为0的移动回free列表</dd>
<dd>
注意gc的类之间不要存在引用关系,不过也可以如下处理: </dd>
<dd>
gcText包含gcSprite,我们使PoolList&lt;gcText&gt;先释放即可 </dd></dl>
<p class="definition">在文件 <a class="el" href="dl__memory__pool_8h_source.html">dl_memory_pool.h</a> 中定义.</p>
</div><h2 class="groupheader">变量说明</h2>
<a id="a020806b9ca69ce6d6d50205576feb741" name="a020806b9ca69ce6d6d50205576feb741"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a020806b9ca69ce6d6d50205576feb741">&#9670;&#160;</a></span>OUTPUT_ADD</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool OUTPUT_ADD = true</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__memory__pool_8h_source.html">dl_memory_pool.h</a><a class="el" href="dl__memory__pool_8h_source.html#l00032">32</a> 行定义.</p>
</div>
</div>
<a id="ad6bd092b3e266aa0935d7e5b16c6230e" name="ad6bd092b3e266aa0935d7e5b16c6230e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6bd092b3e266aa0935d7e5b16c6230e">&#9670;&#160;</a></span>OUTPUT_DEBUG</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool OUTPUT_DEBUG = true</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__memory__pool_8h_source.html">dl_memory_pool.h</a><a class="el" href="dl__memory__pool_8h_source.html#l00031">31</a> 行定义.</p>
</div>
</div>
<a id="aa5bc91b0e910898584fd4497c943359f" name="aa5bc91b0e910898584fd4497c943359f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5bc91b0e910898584fd4497c943359f">&#9670;&#160;</a></span>OUTPUT_MOVE</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool OUTPUT_MOVE = false</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__memory__pool_8h_source.html">dl_memory_pool.h</a><a class="el" href="dl__memory__pool_8h_source.html#l00033">33</a> 行定义.</p>
</div>
</div>
<a id="a1e264ff1dd19be77f7a3852965bad1c8" name="a1e264ff1dd19be77f7a3852965bad1c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e264ff1dd19be77f7a3852965bad1c8">&#9670;&#160;</a></span>OUTPUT_STACK</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool OUTPUT_STACK = false</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel constexpr">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__memory__pool_8h_source.html">dl_memory_pool.h</a><a class="el" href="dl__memory__pool_8h_source.html#l00034">34</a> 行定义.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1
</small></address>
</div><!-- doc-content -->
</body>
</html>