Files
hustoj/web/cppreference-zh/chmhelp/cpp-language-new.html
2025-08-01 12:57:54 +08:00

365 lines
51 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>new &#34920;&#36798;&#24335;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_language_new skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">new &#34920;&#36798;&#24335;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#21019;&#24314;&#24182;&#21021;&#22987;&#21270;&#25317;&#26377;&#21160;&#24577;<a href="cpp-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#30340;&#23545;&#35937;&#65292;&#36825;&#20123;&#23545;&#35937;&#30340;&#29983;&#23384;&#26399;&#19981;&#21463;&#23427;&#20204;&#21019;&#24314;&#26102;&#25152;&#22312;&#30340;&#20316;&#29992;&#22495;&#38480;&#21046;&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>::</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>new</b></code> <code><b>(</b></code> <span class="t-spar">&#31867;&#22411;</span> <code><b>)</b></code> <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span><span class="t-mark">(&#21487;&#36873;)</span></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>::</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>new</b></code> <span class="t-spar">new&#31867;&#22411;</span> <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span><span class="t-mark">(&#21487;&#36873;)</span></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>::</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>new</b></code> <code><b>(</b></code><span class="t-spar">&#24067;&#32622;&#21442;&#25968;</span><code><b>)</b></code> <code><b>(</b></code> <span class="t-spar">&#31867;&#22411;</span> <code><b>)</b></code> <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span><span class="t-mark">(&#21487;&#36873;)</span></td>
<td>(3)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>::</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>new</b></code> <code><b>(</b></code><span class="t-spar">&#24067;&#32622;&#21442;&#25968;</span><code><b>)</b></code> <span class="t-spar">new&#31867;&#22411;</span> <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span><span class="t-mark">(&#21487;&#36873;)</span></td>
<td>(4)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div class="t-li1"><span class="t-li">1)</span> &#23581;&#35797;&#21019;&#24314;<a href="cpp-language-type.html#.E7.B1.BB.E5.9E.8B.E7.9A.84.E5.91.BD.E5.90.8D">&#31867;&#22411;&#26631;&#35782;</a> <span class="t-spar">&#31867;&#22411;</span> &#25152;&#25351;&#20195;&#30340;&#31867;&#22411;&#30340;&#19968;&#20010;&#23545;&#35937;&#65292;&#23427;&#21487;&#20197;&#26159;&#25968;&#32452;&#31867;&#22411;<span class="t-rev-inl t-since-cxx11"><span>&#65292;&#21487;&#20197;&#21253;&#21547;<a href="cpp-language-auto.html">&#21344;&#20301;&#31526;&#31867;&#22411;&#35828;&#26126;&#31526;</a></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span><span class="t-rev-inl t-since-cxx17"><span>&#65292;&#25110;&#21253;&#21547;&#23558;&#30001;<a href="cpp-language-class_template_argument_deduction.html">&#31867;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a>&#25512;&#20986;&#30340;&#31867;&#27169;&#26495;&#21517;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#12290;</div>
<div class="t-li1"><span class="t-li">2)</span> &#21516;(1)&#65292;&#20294; <span class="t-spar">new&#31867;&#22411;</span> &#19981;&#33021;&#21253;&#21547;&#25324;&#21495;&#65306;</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">new <span class="kw4">int</span><span class="br0">(</span><span class="sy2">*</span><span class="br0">[</span><span class="nu0">10</span><span class="br0">]</span><span class="br0">)</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#20998;&#26512;&#25104; (new int) (*[10]) ()</span>
new <span class="br0">(</span><span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span><span class="br0">[</span><span class="nu0">10</span><span class="br0">]</span><span class="br0">)</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#20998;&#37197; 10 &#20010;&#20989;&#25968;&#25351;&#38024;&#30340;&#25968;&#32452;</span></pre></div>
</div>
<dl>
<dd>&#21478;&#22806;&#65292;<span class="t-spar">new&#31867;&#22411;</span> &#26159;&#36138;&#24515;&#30340;&#65306;&#23427;&#23558;&#21253;&#21547;&#21487;&#20197;&#25104;&#20026;&#22768;&#26126;&#31526;&#19968;&#37096;&#20998;&#30340;&#25152;&#26377;&#35760;&#21495;&#65306;</dd>
</dl>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">new <span class="kw4">int</span> <span class="sy2">+</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#20998;&#26512;&#25104; (new int) + 1&#65292;&#22686;&#21152; new int &#25152;&#36820;&#22238;&#30340;&#25351;&#38024;</span>
new <span class="kw4">int</span> <span class="sy2">*</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#20998;&#26512;&#25104; (new int*) (1)</span></pre></div>
</div>
<div class="t-li1"><span class="t-li">3)</span> &#21516;(1)&#65292;&#20294;&#20250;&#21521;<a href="cpp-memory-new-operator_new.html">&#20998;&#37197;&#20989;&#25968;</a>&#25552;&#20379;&#39069;&#22806;&#23454;&#21442;&#65292;&#35265;<a href="cpp-language-new.html#.E5.B8.83.E7.BD.AE_new">&#24067;&#32622; new</a></div>
<div class="t-li1"><span class="t-li">4)</span> &#21516;(2)&#65292;&#20294;&#20250;&#21521;&#20998;&#37197;&#20989;&#25968;&#25552;&#20379;&#39069;&#22806;&#23454;&#21442;</div>
<p><br />
&#31526;&#21512;&#19979;&#21015;&#26465;&#20214;&#20043;&#19968;&#26102;&#65292;&#24517;&#39035;&#35201;&#26377; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span>&#65306;</p>
<ul>
<li><span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159;<a href="cpp-language-array.html#.E6.9C.AA.E7.9F.A5.E8.BE.B9.E7.95.8C.E6.95.B0.E7.BB.84">&#26410;&#30693;&#36793;&#30028;&#25968;&#32452;</a></li>
</ul>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<ul>
<li><span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#20013;&#20351;&#29992;&#20102;<a href="cpp-language-auto.html">&#21344;&#20301;&#31526;</a>&#65292;&#21363; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">auto</span></span></span> <span class="t-rev-inl t-since-cxx14"><span>&#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp">decltype<span class="br0">(</span><span class="kw4">auto</span><span class="br0">)</span></span></span></span> <span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></span></span><span class="t-rev-inl t-since-cxx20"><span>&#65292;&#21487;&#33021;&#19982;<a href="cpp-language-constraints.html#.E6.A6.82.E5.BF.B5">&#31867;&#22411;&#32422;&#26463;</a>&#32467;&#21512;</span> <span><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></span></span></li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr class="t-rev t-since-cxx17">
<td>
<ul>
<li><span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#20013;&#20351;&#29992;&#20102;&#31867;&#27169;&#26495;&#65292;&#19988;&#35813;&#27169;&#26495;&#26377;&#23454;&#21442;&#38656;&#35201;&#34987;<a href="cpp-language-class_template_argument_deduction.html">&#25512;&#23548;</a></li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">double</span><span class="sy2">*</span> p <span class="sy1">=</span> new <span class="kw4">double</span><span class="br0">[</span><span class="br0">]</span><span class="br0">{</span><span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">3</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#21019;&#24314; double[3] &#31867;&#22411;&#30340;&#25968;&#32452;</span>
<span class="kw4">auto</span> p <span class="sy1">=</span> new <span class="kw4">auto</span><span class="br0">(</span><span class="st0">&#39;c&#39;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21019;&#24314;&#21333;&#20010; char &#31867;&#22411;&#30340;&#23545;&#35937;&#12290;p &#26159;&#19968;&#20010; char*</span>
<span class="kw4">auto</span> q <span class="sy1">=</span> new std<span class="sy4">::</span><span class="me2">integral</span> <span class="kw4">auto</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK: q &#26159;&#19968;&#20010; int*</span>
<span class="kw4">auto</span> q <span class="sy1">=</span> new std<span class="sy4">::</span><span class="me2">floating_point</span> <span class="kw4">auto</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span> <span class="co1">// &#38169;&#35823;&#65306;&#19981;&#28385;&#36275;&#31867;&#22411;&#32422;&#26463;</span>
<span class="kw4">auto</span> r <span class="sy1">=</span> new <a href="cpp-utility-pair.html"><span class="kw1096">std::<span class="me2">pair</span></span></a><span class="br0">(</span><span class="nu0">1</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK: r &#26159;&#19968;&#20010; std::pair&lt;int, bool&gt;*</span>
<span class="kw4">auto</span> r <span class="sy1">=</span> new <a href="cpp-container-vector.html"><span class="kw1269">std::<span class="me2">vector</span></span></a><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#26080;&#27861;&#25512;&#23548;&#20803;&#32032;&#31867;&#22411;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p><code>new</code> &#34920;&#36798;&#24335;&#23581;&#35797;&#30003;&#35831;&#23384;&#20648;&#31354;&#38388;&#65292;&#24182;&#22312;&#24050;&#30003;&#35831;&#30340;&#23384;&#20648;&#31354;&#38388;&#19978;&#65292;&#23581;&#35797;&#26500;&#36896;&#24182;&#21021;&#22987;&#21270;&#19968;&#20010;&#26080;&#21517;&#30340;&#23545;&#35937;&#25110;&#23545;&#35937;&#25968;&#32452;&#12290;<code>new</code> &#34920;&#36798;&#24335;&#36820;&#22238;&#19968;&#20010;&#25351;&#21521;&#23427;&#26500;&#36896;&#30340;&#23545;&#35937;&#25110;&#32773;&#23545;&#35937;&#25968;&#32452;&#30340;&#32431;&#21491;&#20540;&#25351;&#38024;&#12290;</p>
<p>&#22914;&#26524; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159;&#25968;&#32452;&#31867;&#22411;&#65292;&#37027;&#20040;&#23427;&#31532;&#19968;&#32500;&#20043;&#22806;&#30340;&#25152;&#26377;&#32500;&#37117;&#24517;&#39035;&#25351;&#23450;&#20026;&#27491;&#30340;<span class="t-rev-inl t-until-cxx14"><span><a href="cpp-language-constant_expression.html">&#25972;&#25968;&#24120;&#37327;&#34920;&#36798;&#24335;</a></span> <span><span class="t-mark-rev t-until-cxx14">(C++14 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx14"><span>&#31867;&#22411;&#26159; <span class="t-lc"><a href="cpp-types-size_t.html">std::size_t</a></span> &#30340;<a href="cpp-language-constant_expression.html">&#32463;&#36716;&#25442;&#30340;&#24120;&#37327;&#34920;&#36798;&#24335;</a></span> <span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></span></span>&#65292;&#20294;&#65288;&#20165;&#24403;&#20351;&#29992;&#26080;&#25324;&#21495;&#35821;&#27861; <span class="t-v">(2)</span> &#26102;&#65289;&#31532;&#19968;&#32500;&#21487;&#20197;&#26159;<span class="t-rev-inl t-until-cxx14"><span>&#25972;&#25968;&#31867;&#22411;&#12289;&#26522;&#20030;&#31867;&#22411;&#25110;&#25317;&#26377;&#21333;&#20010;&#21040;&#25972;&#25968;&#25110;&#26522;&#20030;&#31867;&#22411;&#30340;&#38750; explicit &#36716;&#25442;&#20989;&#25968;&#30340;&#31867;&#31867;&#22411;</span> <span><span class="t-mark-rev t-until-cxx14">(C++14 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx14"><span>&#20219;&#20309;&#33021;&#36716;&#25442;&#25104; <span class="t-lc"><a href="cpp-types-size_t.html">std::size_t</a></span> &#30340;&#34920;&#36798;&#24335;</span> <span><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></span></span>&#12290;&#36825;&#26159;&#21807;&#19968;&#30452;&#25509;&#21019;&#24314;&#22823;&#23567;&#22312;&#36816;&#34892;&#26102;&#23450;&#20041;&#30340;&#25968;&#32452;&#30340;&#26041;&#27861;&#65292;&#36825;&#31181;&#25968;&#32452;&#24120;&#34987;&#31216;&#20316;<i>&#21160;&#24577;&#25968;&#32452;</i>&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">42</span><span class="sy4">;</span>
<span class="kw4">double</span> a<span class="br0">[</span>n<span class="br0">]</span><span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;</span>
<span class="kw4">auto</span> p1 <span class="sy1">=</span> new <span class="kw4">double</span><span class="br0">[</span>n<span class="br0">]</span><span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="sy4">;</span> <span class="co1">// OK</span>
<span class="kw4">auto</span> p2 <span class="sy1">=</span> new <span class="kw4">double</span><span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="br0">[</span>n<span class="br0">]</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#21482;&#26377;&#31532;&#19968;&#32500;&#21487;&#20197;&#19981;&#26159;&#24120;&#37327;</span>
<span class="kw4">auto</span> p3 <span class="sy1">=</span> new <span class="br0">(</span><span class="kw4">double</span><span class="br0">[</span>n<span class="br0">]</span><span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#35821;&#27861; (1) &#19981;&#33021;&#29992;&#20110;&#21160;&#24577;&#25968;&#32452;</span></pre></div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-until-cxx11">
<td>
<p>&#22914;&#26524;&#31532;&#19968;&#32500;&#20013;&#30340;&#20540;&#65288;&#22914;&#26524;&#38656;&#35201;&#21017;&#36716;&#25442;&#21040;&#25972;&#25968;&#25110;&#26522;&#20030;&#31867;&#22411;&#65289;&#20026;&#36127;&#65292;&#37027;&#20040;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</p>
</td>
<td><span class="t-mark-rev t-until-cxx11">(C++11 &#21069;)</span></td>
</tr>
<tr class="t-rev t-since-cxx11">
<td>
<p>&#19979;&#21015;&#24773;&#20917;&#20013;&#25351;&#23450;&#31532;&#19968;&#32500;&#30340;&#34920;&#36798;&#24335;&#26159;&#38169;&#35823;&#30340;&#65306;</p>
<ul>
<li>&#34920;&#36798;&#24335;&#26159;&#38750;&#31867;&#31867;&#22411;&#65292;&#19988;&#20854;&#20540;&#22312;&#36716;&#25442;&#21040; <span class="t-lc"><a href="cpp-types-size_t.html">std::size_t</a></span> &#21069;&#26159;&#36127;&#30340;&#65307;</li>
<li>&#34920;&#36798;&#24335;&#25317;&#26377;&#31867;&#31867;&#22411;&#65292;&#19988;&#20854;&#20540;&#22312;&#29992;&#25143;&#23450;&#20041;&#36716;&#25442;&#20989;&#25968;&#21518;&#65292;&#22312;<a href="cpp-language-implicit_conversion.html">&#31532;&#20108;&#27425;&#26631;&#20934;&#36716;&#25442;</a>&#21069;&#26159;&#36127;&#30340;&#65307;</li>
<li>&#34920;&#36798;&#24335;&#30340;&#20540;&#22823;&#20110;&#26576;&#20010;&#23454;&#29616;&#23450;&#20041;&#26497;&#38480;&#65307;</li>
<li>&#20854;&#20540;&#23567;&#20110;<a href="cpp-language-aggregate_initialization.html">&#33457;&#25324;&#21495;&#21021;&#22987;&#21270;&#22120;</a>&#20013;&#25552;&#20379;&#30340;&#25968;&#32452;&#20803;&#32032;&#25968;&#37327;&#65288;&#20063;&#21253;&#21547;<a href="cpp-language-string_literal.html">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</a>&#20013;&#30340;&#32456;&#27490; <code>&#39;\0&#39;</code>&#65289;&#12290;</li>
</ul>
<p>&#22914;&#26524;&#31532;&#19968;&#32500;&#20540;&#22240;&#20197;&#19978;&#20219;&#20309;&#21407;&#22240;&#32780;&#38169;&#35823;&#65292;</p>
<ul>
<li>&#22914;&#26524;&#22312;&#36716;&#25442;&#21040; <span class="t-lc"><a href="cpp-types-size_t.html">std::size_t</a></span> &#21518;&#65292;&#31532;&#19968;&#32500;&#26159;<a href="cpp-language-constant_expression.html">&#26680;&#24515;&#24120;&#37327;&#34920;&#36798;&#24335;</a>&#65292;&#37027;&#20040;&#31243;&#24207;&#38750;&#33391;&#26500;&#65288;&#24341;&#21457;&#32534;&#35793;&#26102;&#38169;&#35823;&#65289;&#65307;</li>
<li>&#21542;&#21017;&#65292;&#22914;&#26524;&#35201;&#35843;&#29992;&#30340;&#20998;&#37197;&#20989;&#25968;&#26159;&#19981;&#25243;&#20986;&#30340;&#65292;&#37027;&#20040; new &#34920;&#36798;&#24335;&#36820;&#22238;&#35831;&#27714;&#32467;&#26524;&#31867;&#22411;&#30340;&#31354;&#25351;&#38024;</li>
<li>&#21542;&#21017;&#65292;new &#34920;&#36798;&#24335;&#19981;&#35843;&#29992;&#20998;&#37197;&#20989;&#25968;&#65292;&#32780;&#20195;&#20043;&#20197;&#25243;&#20986; <span class="t-lc"><a href="cpp-memory-new-bad_array_new_length.html">std::bad_array_new_length</a></span> &#31867;&#22411;&#25110;&#23427;&#30340;&#27966;&#29983;&#31867;&#30340;&#24322;&#24120;</li>
</ul>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<p>&#31532;&#19968;&#32500;&#20026;&#38646;&#26159;&#21487;&#25509;&#21463;&#30340;&#65292;&#20998;&#37197;&#20989;&#25968;&#20063;&#20250;&#34987;&#35843;&#29992;&#12290;</p>
<p>&#27880;&#24847;&#65306;<span class="t-lc"><a href="cpp-container-vector.html">std::vector</a></span> &#25552;&#20379;&#20102;&#19982;&#19968;&#32500;&#30340;&#21160;&#24577;&#25968;&#32452;&#31867;&#20284;&#30340;&#21151;&#33021;&#12290;</p>
<h4><span class="mw-headline" id=".E5.88.86.E9.85.8D">&#20998;&#37197;</span></h4>
<p>new &#34920;&#36798;&#24335;&#36890;&#36807;&#35843;&#29992;&#36866;&#24403;&#30340;<a href="cpp-memory-new-operator_new.html">&#20998;&#37197;&#20989;&#25968;</a>&#20998;&#37197;&#23384;&#20648;&#12290;&#22914;&#26524; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159;&#38750;&#25968;&#32452;&#31867;&#22411;&#65292;&#37027;&#20040;&#20989;&#25968;&#21517;&#26159; <code>operator new</code>&#12290;&#22914;&#26524; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159;&#25968;&#32452;&#31867;&#22411;&#65292;&#37027;&#20040;&#20989;&#25968;&#21517;&#26159; <code>operator new[]</code>&#12290;</p>
<p>&#22914;<a href="cpp-memory-new-operator_new.html">&#20998;&#37197;&#20989;&#25968;</a>&#20013;&#25152;&#25551;&#36848;&#65292;C++ &#31243;&#24207;&#21487;&#25552;&#20379;&#36825;&#20123;&#20989;&#25968;&#30340;&#20840;&#23616;&#21644;&#31867;&#29305;&#26377;&#26367;&#25442;&#20989;&#25968;&#12290;&#22914;&#26524; new &#34920;&#36798;&#24335;&#20197; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy4">::</span></span></span> &#36816;&#31639;&#31526;&#24320;&#22987;&#65292;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy4">::</span><span class="me2">new</span> T</span></span> &#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy4">::</span><span class="me2">new</span> T<span class="br0">[</span>n<span class="br0">]</span></span></span>&#65292;&#37027;&#20040;&#24573;&#30053;&#31867;&#29305;&#26377;&#26367;&#25442;&#20989;&#25968;&#65288;&#22312;&#20840;&#23616;<a href="cpp-language-scope.html">&#20316;&#29992;&#22495;</a>&#20013;<a href="cpp-language-lookup.html">&#26597;&#25214;</a>&#20989;&#25968;&#65289;&#12290;&#21542;&#21017;&#65292;&#22914;&#26524; <code>T</code> &#26159;&#31867;&#31867;&#22411;&#65292;&#37027;&#20040;&#23601;&#20250;&#20174; <code>T</code> &#30340;&#31867;&#20316;&#29992;&#22495;&#20013;&#24320;&#22987;&#26597;&#25214;&#12290;</p>
<p>&#22312;&#35843;&#29992;&#20998;&#37197;&#20989;&#25968;&#26102;&#65292;new &#34920;&#36798;&#24335;&#23558;&#35831;&#27714;&#30340;&#23383;&#33410;&#25968;&#20316;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a></span></span> &#31867;&#22411;&#30340;&#31532;&#19968;&#21442;&#25968;&#20256;&#36882;&#32473;&#23427;&#65292;&#35813;&#21442;&#25968;&#23545;&#20110;&#38750;&#25968;&#32452; <code>T</code> &#24688;&#22909;&#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">sizeof<span class="br0">(</span>T<span class="br0">)</span></span></span>&#12290;</p>
<p>&#25968;&#32452;&#30340;&#20998;&#37197;&#20013;&#21487;&#33021;&#24102;&#26377;&#19968;&#20010;&#26410;&#25351;&#26126;&#30340;&#24320;&#38144;&#65288;overhead&#65289;&#65292;&#19988;&#27599;&#27425;&#35843;&#29992; new &#30340;&#36825;&#20010;&#24320;&#38144;&#21487;&#33021;&#19981;&#21516;&#65292;&#38500;&#38750;&#36873;&#25321;&#30340;&#20998;&#37197;&#20989;&#25968;&#26159;&#26631;&#20934;&#38750;&#20998;&#37197;&#24418;&#24335;&#12290;new &#34920;&#36798;&#24335;&#25152;&#36820;&#22238;&#30340;&#25351;&#38024;&#31561;&#20110;&#20998;&#37197;&#20989;&#25968;&#25152;&#36820;&#22238;&#30340;&#25351;&#38024;&#21152;&#19978;&#35813;&#20540;&#12290;&#35768;&#22810;&#23454;&#29616;&#20351;&#29992;&#25968;&#32452;&#24320;&#38144;&#23384;&#20648;&#25968;&#32452;&#20013;&#30340;&#23545;&#35937;&#25968;&#37327;&#65292;<a href="cpp-language-delete.html"><span class="t-c"><span class="mw-geshi cpp source-cpp">delete<span class="br0">[</span><span class="br0">]</span></span></span></a> &#34920;&#36798;&#24335;&#20250;&#29992;&#23427;&#36827;&#34892;&#27491;&#30830;&#25968;&#37327;&#30340;&#26512;&#26500;&#20989;&#25968;&#35843;&#29992;&#12290;&#21478;&#22806;&#65292;&#22914;&#26524;&#29992; new &#20998;&#37197; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span>&#12289;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> <span class="t-rev-inl t-since-cxx17"><span>&#25110; <a href="cpp-types-byte.html"><tt>std::byte</tt></a></span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#30340;&#25968;&#32452;&#65292;&#37027;&#20040;&#23427;&#21487;&#33021;&#20174;&#20998;&#37197;&#20989;&#25968;&#35831;&#27714;&#39069;&#22806;&#20869;&#23384;&#65292;&#20197;&#27492;&#20445;&#35777;&#25152;&#26377;&#19981;&#22823;&#20110;&#35831;&#27714;&#25968;&#32452;&#22823;&#23567;&#30340;&#31867;&#22411;&#30340;&#23545;&#35937;&#22312;&#25918;&#20837;&#25152;&#20998;&#37197;&#30340;&#25968;&#32452;&#20013;&#26102;&#33021;&#22815;&#27491;&#30830;&#23545;&#40784;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx14">
<td>
<p>&#20801;&#35768;&#23558;&#21508;&#20010; new &#34920;&#36798;&#24335;&#36890;&#36807;&#21487;&#26367;&#25442;&#20998;&#37197;&#20989;&#25968;&#25152;&#36827;&#34892;&#30340;&#20998;&#37197;&#20104;&#20197;&#30465;&#30053;&#25110;&#21512;&#24182;&#12290;&#22312;&#30465;&#30053;&#30340;&#24773;&#20917;&#19979;&#65292;&#23384;&#20648;&#21487;&#20197;&#30001;&#32534;&#35793;&#22120;&#25552;&#20379;&#65292;&#32780;&#26080;&#38656;&#35843;&#29992;&#20998;&#37197;&#20989;&#25968;&#65288;&#36825;&#20063;&#20801;&#35768;&#20248;&#21270;&#25481;&#19981;&#20351;&#29992;&#30340; new &#34920;&#36798;&#24335;&#65289;&#12290;&#22312;&#21512;&#24182;&#30340;&#24773;&#20917;&#19979;&#19988;&#28385;&#36275;&#20197;&#19979;&#25152;&#26377;&#26465;&#20214;&#26102;&#65292;new &#34920;&#36798;&#24335; <code>E1</code> &#25152;&#20570;&#30340;&#20998;&#37197;&#21487;&#20197;&#34987;&#25193;&#23637;&#65292;&#20197;&#25552;&#20379;&#21478;&#19968;&#20010; new &#34920;&#36798;&#24335; <code>E2</code> &#30340;&#39069;&#22806;&#23384;&#20648;&#65306;</p>
<div class="t-li1"><span class="t-li">1)</span> <code>E1</code> &#25152;&#20998;&#37197;&#23545;&#35937;&#30340;&#29983;&#23384;&#26399;&#20005;&#26684;&#21253;&#21547; <code>E2</code> &#25152;&#20998;&#37197;&#23545;&#35937;&#30340;&#29983;&#23384;&#26399;&#65292;</div>
<div class="t-li1"><span class="t-li">2)</span> <code>E1</code> &#19982; <code>E2</code> &#23558;&#35843;&#29992;&#21516;&#19968;&#21487;&#26367;&#25442;&#20840;&#23616;&#20998;&#37197;&#20989;&#25968;</div>
<div class="t-li1"><span class="t-li">3)</span> &#23545;&#20110;&#25243;&#20986;&#24322;&#24120;&#30340;&#20998;&#37197;&#20989;&#25968;&#65292;<code>E1</code> &#19982; <code>E2</code> &#20013;&#30340;&#24322;&#24120;&#23558;&#39318;&#20808;&#34987;&#21516;&#19968;&#22788;&#29702;&#22359;&#25429;&#25417;&#12290;</div>
&#27880;&#24847;&#27492;&#20248;&#21270;&#20165;&#22312;&#20351;&#29992; new &#34920;&#36798;&#24335;&#65292;&#32780;&#38750;&#35843;&#29992;&#21487;&#26367;&#25442;&#20998;&#37197;&#20989;&#25968;&#30340;&#20219;&#20309;&#20854;&#20182;&#26041;&#27861;&#26102;&#20801;&#35768;&#65306;<span class="t-c"><span class="mw-geshi cpp source-cpp">delete <span class="br0">[</span><span class="br0">]</span> new <span class="kw4">int</span><span class="br0">[</span><span class="nu0">10</span><span class="br0">]</span><span class="sy4">;</span></span></span> &#33021;&#34987;&#20248;&#21270;&#25481;&#65292;&#20294; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-memory-new-operator_delete.html"><span class="kw689">operator delete</span></a><span class="br0">(</span><a href="cpp-memory-new-operator_new.html"><span class="kw687">operator new</span></a><span class="br0">(</span><span class="nu0">10</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span></span></span> &#19981;&#33021;&#12290;</td>
<td><span class="t-mark-rev t-since-cxx14">(C++14 &#36215;)</span></td>
</tr>
<tr class="t-rev t-since-cxx20">
<td>
<p>&#22312;<a href="cpp-language-constant_expression.html">&#24120;&#37327;&#34920;&#36798;&#24335;</a>&#27714;&#20540;&#26399;&#38388;&#65292;&#22987;&#32456;&#30465;&#30053;&#23545;&#20998;&#37197;&#20989;&#25968;&#30340;&#35843;&#29992;&#12290;&#21482;&#26377;&#22312;&#20854;&#20182;&#24773;&#20917;&#19979;&#35843;&#29992;&#21487;&#26367;&#25442;&#20840;&#23616;&#20998;&#37197;&#20989;&#25968;&#30340; new &#34920;&#36798;&#24335;&#33021;&#22312;&#24120;&#37327;&#34920;&#36798;&#24335;&#20013;&#27714;&#20540;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<h5><span class="mw-headline" id=".E5.B8.83.E7.BD.AE_new">&#24067;&#32622; new</span></h5>
<p>&#22914;&#26524;&#25552;&#20379;&#20102; <span class="t-spar">&#24067;&#32622;&#21442;&#25968;</span>&#65292;&#37027;&#20040;&#23427;&#20204;&#20250;&#20316;&#20026;&#39069;&#22806;&#23454;&#21442;&#20256;&#36882;&#32473;&#20998;&#37197;&#20989;&#25968;&#12290;&#36825;&#20123;&#20998;&#37197;&#20989;&#25968;&#34987;&#31216;&#20316;&ldquo;&#24067;&#32622; new&rdquo;&#65292;&#36825;&#26469;&#28304;&#20110;&#26631;&#20934;&#20998;&#37197;&#20989;&#25968; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span><span class="sy2">*</span> <a href="cpp-memory-new-operator_new.html"><span class="kw687">operator new</span></a><span class="br0">(</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a>, <span class="kw4">void</span><span class="sy2">*</span><span class="br0">)</span></span></span>&#65292;&#23427;&#30452;&#25509;&#36820;&#22238;&#26410;&#26356;&#25913;&#30340;&#31532;&#20108;&#23454;&#21442;&#12290;&#23427;&#34987;&#29992;&#20110;&#22312;&#24050;&#20998;&#37197;&#30340;&#23384;&#20648;&#20013;&#26500;&#36896;&#23545;&#35937;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// &#22312;&#20219;&#20309;&#22359;&#20316;&#29992;&#22495;&#20869;&hellip;&hellip;</span>
<span class="br0">{</span>
alignas<span class="br0">(</span>T<span class="br0">)</span> <span class="kw4">unsigned</span> <span class="kw4">char</span> buf<span class="br0">[</span>sizeof<span class="br0">(</span>T<span class="br0">)</span><span class="br0">]</span><span class="sy4">;</span>
<span class="co1">// &#38745;&#24577;&#20998;&#37197;&#25317;&#26377;&#33258;&#21160;&#23384;&#20648;&#26399;&#30340;&#23384;&#20648;&#65292;&#23545;&#20219;&#20309;&#23545;&#35937;&#31867;&#22411; `T` &#36275;&#22815;&#22823;&#12290;</span>
T<span class="sy2">*</span> tptr <span class="sy1">=</span> new<span class="br0">(</span>buf<span class="br0">)</span> T<span class="sy4">;</span> <span class="co1">// &#26500;&#36896;&#19968;&#20010; `T` &#23545;&#35937;&#65292;&#23558;&#23427;&#30452;&#25509;&#32622;&#20110;</span>
<span class="co1">// &#20320;&#39044;&#20998;&#37197;&#30340;&#20301;&#20110;&#20869;&#23384;&#22320;&#22336; `buf` &#30340;&#23384;&#20648;&#12290;</span>
tptr<span class="sy2">-</span><span class="sy1">&gt;</span>~T<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#22914;&#26524;&#31243;&#24207;&#20381;&#36182;&#23545;&#35937;&#30340;&#26512;&#26500;&#20989;&#25968;&#30340;&#21103;&#20316;&#29992;&#65292;&#20320;&#24517;&#39035;**&#25163;&#21160;**&#35843;&#29992;&#23427;&#12290;</span>
<span class="br0">}</span> <span class="co1">// &#31163;&#24320;&#27492;&#22359;&#20316;&#29992;&#22495;&#33258;&#21160;&#35299;&#20998;&#37197; `buf` &#12290;</span></pre></div>
</div>
<p>&#27880;&#24847;&#65306;<a href="cpp-named_req-Allocator.html"><span style="font-style:italic">&#20998;&#37197;&#22120;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(Allocator)</span></a> &#31867;&#30340;&#21508;&#25104;&#21592;&#20989;&#25968;&#23553;&#35013;&#20102;&#27492;&#21151;&#33021;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx17">
<td>
<p>&#22312;&#20998;&#37197;&#20855;&#26377;&#36229;&#20986; <code>__STDCPP_DEFAULT_NEW_ALIGNMENT__</code> &#30340;&#23545;&#40784;&#35201;&#27714;&#30340;&#23545;&#35937;&#25110;&#36825;&#31181;&#23545;&#35937;&#30340;&#25968;&#32452;&#26102;&#65292;new &#34920;&#36798;&#24335;&#23558;&#23545;&#40784;&#35201;&#27714;&#20316;&#20026;&#31532;&#20108;&#23454;&#21442;&#65288;&#20197; <span class="t-lc"><a href="cpp-memory-new-align_val_t.html">std::align_val_t</a></span> &#21253;&#35013;&#65289;&#20256;&#36882;&#32473;&#20998;&#37197;&#20989;&#25968;&#65288;&#23545;&#20110;&#24067;&#32622;&#24418;&#24335;&#65292;<span class="t-spar">&#24067;&#32622;&#21442;&#25968;</span> &#34987;&#25918;&#22312;&#23545;&#40784;&#20043;&#21518;&#65292;&#20316;&#20026;&#31532;&#19977;&#12289;&#31532;&#22235;&#20010;&#23454;&#21442;&#31561;&#65289;&#12290;&#22914;&#26524;&#37325;&#36733;&#20915;&#35758;&#22833;&#36133;&#65288;&#24403;&#23450;&#20041;&#20102;&#20855;&#26377;&#19981;&#21516;&#31614;&#21517;&#30340;&#31867;&#29305;&#26377;&#20998;&#37197;&#20989;&#25968;&#26102;&#65292;&#20250;&#21457;&#29983;&#27492;&#31181;&#24773;&#20917;&#65292;&#22240;&#20026;&#23427;&#38544;&#34255;&#20102;&#20840;&#23616;&#29256;&#26412;&#65289;&#65292;&#37027;&#20040;&#20250;&#20197;&#23454;&#21442;&#21015;&#34920;&#20013;&#19981;&#24102;&#23545;&#40784;&#20877;&#27425;&#23581;&#35797;&#36827;&#34892;&#37325;&#36733;&#20915;&#35758;&#12290;&#36825;&#20801;&#35768;&#19981;&#20851;&#24515;&#23545;&#40784;&#30340;&#31867;&#29305;&#26377;&#20998;&#37197;&#20989;&#25968;&#20248;&#20808;&#20110;&#20840;&#23616;&#30340;&#20851;&#24515;&#23545;&#40784;&#30340;&#20998;&#37197;&#20989;&#25968;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></td>
</tr>
</table>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">new T<span class="sy4">;</span> <span class="co1">// &#35843;&#29992; operator new(sizeof(T))</span>
<span class="co1">// (C++17) &#25110; operator new(sizeof(T), std::align_val_t(alignof(T))))</span>
new T<span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="sy4">;</span> <span class="co1">// &#35843;&#29992; operator new[](sizeof(T)*5 + overhead)</span>
<span class="co1">// (C++17) &#25110; operator new(sizeof(T)*5+overhead, std::align_val_t(alignof(T))))</span>
new<span class="br0">(</span><span class="nu0">2</span>,f<span class="br0">)</span> T<span class="sy4">;</span> <span class="co1">// &#35843;&#29992; operator new(sizeof(T), 2, f)</span>
<span class="co1">// (C++17) &#25110; operator new(sizeof(T), std::align_val_t(alignof(T)), 2, f)</span></pre></div>
</div>
<p>&#22914;&#26524;&#19981;&#25243;&#20986;&#30340;&#20998;&#37197;&#20989;&#25968;&#65288;&#20363;&#22914; <span class="t-c"><span class="mw-geshi cpp source-cpp">new<span class="br0">(</span><a href="cpp-memory-new-nothrow.html"><span class="kw699">std::<span class="me2">nothrow</span></span></a><span class="br0">)</span> T</span></span> &#25152;&#36873;&#25321;&#30340;&#65289;&#22240;&#20026;&#20998;&#37197;&#22833;&#36133;&#36820;&#22238;&#31354;&#25351;&#38024;&#65292;&#37027;&#20040; new &#34920;&#36798;&#24335;&#20250;&#31435;&#21363;&#36820;&#22238;&#65292;&#32780;&#19981;&#20250;&#35797;&#22270;&#21021;&#22987;&#21270;&#23545;&#35937;&#25110;&#35843;&#29992;&#35299;&#20998;&#37197;&#20989;&#25968;&#12290;&#22914;&#26524;&#23558;&#31354;&#25351;&#38024;&#20316;&#20026;&#23454;&#21442;&#20256;&#32473;&#19981;&#20998;&#37197;&#30340;&#24067;&#32622; new &#34920;&#36798;&#24335;&#65292;&#32780;&#36825;&#20250;&#20351;&#24471;&#34987;&#36873;&#25321;&#30340;&#26631;&#20934;&#19981;&#20998;&#37197;&#24067;&#32622;&#20998;&#37197;&#20989;&#25968;&#36820;&#22238;&#31354;&#25351;&#38024;&#65292;&#37027;&#20040;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</p>
<h4><span class="mw-headline" id=".E6.9E.84.E9.80.A0">&#26500;&#36896;</span></h4>
<p>new &#34920;&#36798;&#24335;&#25152;&#21019;&#24314;&#30340;&#23545;&#35937;&#25353;&#29031;&#19979;&#21015;&#35268;&#21017;&#21021;&#22987;&#21270;&#65306;</p>
<ul>
<li>&#23545;&#20110;&#38750;&#25968;&#32452;&#30340; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span>&#65292;&#22312;&#25152;&#24471;&#20869;&#23384;&#21306;&#22495;&#20013;&#26500;&#36896;&#21333;&#20010;&#23545;&#35937;&#12290;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#22914;&#26524;&#27809;&#26377; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span>&#65292;&#37027;&#20040;&#23545;&#35937;&#20250;&#34987;<a href="cpp-language-default_initialization.html">&#40664;&#35748;&#21021;&#22987;&#21270;</a>&#12290;</li>
<li>&#22914;&#26524; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span> &#26159;&#24102;&#25324;&#21495;&#30340;&#23454;&#21442;&#21015;&#34920;&#65292;&#37027;&#20040;&#23545;&#35937;&#20250;&#34987;<a href="cpp-language-direct_initialization.html">&#30452;&#25509;&#21021;&#22987;&#21270;</a>&#12290;</li>
</ul>
</dd>
</dl>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<dl>
<dd>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span> &#26159;&#33457;&#25324;&#21495;&#21253;&#22260;&#30340;&#23454;&#21442;&#21015;&#34920;&#65292;&#37027;&#20040;&#23545;&#35937;&#20250;&#34987;<a href="cpp-language-list_initialization.html">&#21015;&#34920;&#21021;&#22987;&#21270;</a>&#12290;</li>
</ul>
</dd>
</dl>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
</table>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159;&#25968;&#32452;&#31867;&#22411;&#65292;&#37027;&#20040;&#21021;&#22987;&#21270;&#19968;&#20010;&#25968;&#32452;&#30340;&#23545;&#35937;&#12290;</li>
</ul>
<dl>
<dd>
<ul>
<li>&#22914;&#26524;&#27809;&#26377; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span>&#65292;&#37027;&#20040;&#27599;&#20010;&#20803;&#32032;&#37117;&#20250;&#34987;<a href="cpp-language-default_initialization.html">&#40664;&#35748;&#21021;&#22987;&#21270;</a>&#12290;</li>
<li>&#22914;&#26524; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span> &#26159;&#19968;&#23545;&#31354;&#25324;&#21495;&#65292;&#37027;&#20040;&#27599;&#20010;&#20803;&#32032;&#34987;<a href="cpp-language-value_initialization.html">&#20540;&#21021;&#22987;&#21270;</a>&#12290;</li>
</ul>
</dd>
</dl>
<table class="t-rev-begin">
<tr class="t-rev t-since-cxx11">
<td>
<dl>
<dd>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span> &#26159;&#33457;&#25324;&#21495;&#21253;&#22260;&#30340;&#23454;&#21442;&#21015;&#34920;&#65292;&#37027;&#20040;&#25968;&#32452;&#20250;&#34987;<a href="cpp-language-aggregate_initialization.html">&#32858;&#21512;&#21021;&#22987;&#21270;</a>&#12290;</li>
</ul>
</dd>
</dl>
</td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr class="t-rev t-since-cxx20">
<td>
<dl>
<dd>
<ul>
<li>&#22914;&#26524; <span class="t-spar">&#21021;&#22987;&#21270;&#22120;</span> &#26159;&#24102;&#25324;&#21495;&#30340;&#23454;&#21442;&#21015;&#34920;&#65292;&#37027;&#20040;&#25968;&#32452;&#20250;&#34987;<a href="cpp-language-aggregate_initialization.html">&#32858;&#21512;&#21021;&#22987;&#21270;</a>&#12290;</li>
</ul>
</dd>
</dl>
</td>
<td><span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></td>
</tr>
</table>
<p>&#22914;&#26524;&#21021;&#22987;&#21270;&#22240;&#25243;&#20986;&#24322;&#24120;&#32780;&#32456;&#27490;&#65288;&#20363;&#22914;&#26469;&#33258;&#26500;&#36896;&#20989;&#25968;&#65289;&#65292;&#37027;&#20040; new &#34920;&#36798;&#24335;&#22312;&#24050;&#32463;&#20998;&#37197;&#20102;&#20219;&#20309;&#23384;&#20648;&#30340;&#24773;&#20917;&#19979;&#20250;&#35843;&#29992;&#36866;&#24403;&#30340;<a href="cpp-memory-new-operator_delete.html">&#35299;&#20998;&#37197;&#20989;&#25968;</a>&#65306;&#23545;&#20110;&#38750;&#25968;&#32452; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-memory-new-operator_delete.html"><span class="kw689">operator delete</span></a></span></span>&#65292;&#32780;&#23545;&#20110;&#25968;&#32452; <span class="t-spar">&#31867;&#22411;</span> &#25110; <span class="t-spar">new&#31867;&#22411;</span> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-memory-new-operator_delete.html"><span class="kw689">operator delete</span></a><span class="br0">[</span><span class="br0">]</span></span></span>&#12290;&#22914;&#26524; new &#34920;&#36798;&#24335;&#20351;&#29992; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy4">::</span><span class="me2">new</span></span></span> &#35821;&#27861;&#65292;&#37027;&#20040;&#20250;&#22312;&#20840;&#23616;&#20316;&#29992;&#22495;&#26597;&#25214;&#35299;&#20998;&#37197;&#20989;&#25968;&#65292;&#21542;&#21017;&#22914;&#26524; <code>T</code> &#26159;&#31867;&#31867;&#22411;&#65292;&#37027;&#20040;&#20250;&#22312; <code>T</code> &#30340;&#20316;&#29992;&#22495;&#26597;&#25214;&#12290;&#22914;&#26524;&#22833;&#36133;&#30340;&#26159;&#24120;&#35268;&#65288;&#38750;&#24067;&#32622;&#65289;&#20998;&#37197;&#20989;&#25968;&#65292;&#37027;&#20040;&#20250;&#36981;&#24490; <a href="cpp-language-delete.html">delete &#34920;&#36798;&#24335;</a>&#20013;&#25152;&#36848;&#30340;&#35268;&#21017;&#26597;&#25214;&#35299;&#20998;&#37197;&#20989;&#25968;&#12290;&#23545;&#20110;&#22833;&#36133;&#30340;&#24067;&#32622; new&#65292;&#19982;&#20043;&#21305;&#37197;&#30340;&#35299;&#20998;&#37197;&#20989;&#25968;&#20013;&#38500;&#31532;&#19968;&#20010;&#22806;&#30340;&#25152;&#26377;&#24418;&#21442;&#30340;&#31867;&#22411;&#65292;&#24517;&#39035;&#19982;&#24067;&#32622; new &#30340;&#21508;&#24418;&#21442;&#31867;&#22411;&#30456;&#21516;&#12290;&#23545;&#35299;&#20998;&#37197;&#20989;&#25968;&#30340;&#35843;&#29992;&#20013;&#65292;&#23558;&#20808;&#21069;&#20174;&#20998;&#37197;&#20989;&#25968;&#21462;&#24471;&#30340;&#20540;&#20316;&#20026;&#31532;&#19968;&#23454;&#21442;&#65292;<span class="t-rev-inl t-since-cxx17"><span>&#23558;&#23545;&#40784;&#20316;&#20026;&#21487;&#36873;&#30340;&#23545;&#40784;&#21442;&#25968;&#65292;</span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span>&#24182;&#23558; <code>&#24067;&#32622;&#21442;&#25968;</code>&#65288;&#22914;&#26524;&#23384;&#22312;&#65289;&#20316;&#20026;&#39069;&#22806;&#30340;&#24067;&#32622;&#21442;&#25968;&#12290;&#22914;&#26524;&#25214;&#19981;&#21040;&#35299;&#20998;&#37197;&#20989;&#25968;&#65292;&#37027;&#20040;&#19981;&#20250;&#35299;&#20998;&#37197;&#20869;&#23384;&#12290;</p>
<h3><span class="mw-headline" id=".E5.86.85.E5.AD.98.E6.B3.84.E6.BC.8F">&#20869;&#23384;&#27844;&#28431;</span></h3>
<p>new &#34920;&#36798;&#24335;&#25152;&#21019;&#24314;&#30340;&#23545;&#35937;&#65288;&#25317;&#26377;&#21160;&#24577;&#23384;&#20648;&#26399;&#30340;&#23545;&#35937;&#65289;&#20250;&#25345;&#32493;&#21040;&#23558; new &#34920;&#36798;&#24335;&#25152;&#36820;&#22238;&#30340;&#25351;&#38024;&#29992;&#20110;&#21305;&#37197;&#30340; <a href="cpp-language-delete.html">delete &#34920;&#36798;&#24335;</a>&#20043;&#26102;&#12290;&#22914;&#26524;&#25351;&#38024;&#30340;&#21407;&#20540;&#20002;&#22833;&#65292;&#37027;&#20040;&#23545;&#35937;&#19981;&#21487;&#36798;&#19988;&#26080;&#27861;&#35299;&#20998;&#37197;&#65306;&#21457;&#29983;<i>&#20869;&#23384;&#27844;&#28431; (memory leak)</i>&#12290;</p>
<p>&#23545;&#25351;&#38024;&#36171;&#20540;&#26102;&#21487;&#33021;&#21457;&#29983;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">int</span><span class="sy2">*</span> p <span class="sy1">=</span> new <span class="kw4">int</span><span class="br0">(</span><span class="nu0">7</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21160;&#24577;&#20998;&#37197;&#30340; int &#24102;&#20540; 7</span>
p <span class="sy1">=</span> nullptr<span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#27844;&#28431;</span></pre></div>
</div>
<p>&#25110;&#25351;&#38024;&#31163;&#24320;&#20316;&#29992;&#22495;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">void</span> f<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">int</span><span class="sy2">*</span> p <span class="sy1">=</span> new <span class="kw4">int</span><span class="br0">(</span><span class="nu0">7</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="co1">// &#20869;&#23384;&#27844;&#28431;</span></pre></div>
</div>
<p>&#25110;&#22240;&#20026;&#24322;&#24120;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw4">void</span> f<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">int</span><span class="sy2">*</span> p <span class="sy1">=</span> new <span class="kw4">int</span><span class="br0">(</span><span class="nu0">7</span><span class="br0">)</span><span class="sy4">;</span>
g<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#21487;&#33021;&#25243;&#20986;&#24322;&#24120;</span>
delete p<span class="sy4">;</span> <span class="co1">// &#22914;&#26524;&#27809;&#26377;&#24322;&#24120;&#21017; ok</span>
<span class="br0">}</span> <span class="co1">// &#22914;&#26524; g() &#25243;&#20986;&#24322;&#24120;&#21017;&#20869;&#23384;&#27844;&#28431;</span></pre></div>
</div>
<p>&#20026;&#20102;&#31616;&#21270;&#21160;&#24577;&#20998;&#37197;&#30340;&#23545;&#35937;&#31649;&#29702;&#65292;&#36890;&#24120;&#23558; new &#34920;&#36798;&#24335;&#30340;&#32467;&#26524;&#23384;&#20648;&#20110;<i><a href="cpp-memory.html#.E6.99.BA.E8.83.BD.E6.8C.87.E9.92.88">&#26234;&#33021;&#25351;&#38024;</a></i>&#20013;&#65306;<span class="t-rev-inl t-until-cxx17"><span><span class="t-lc"><a href="cpp-memory-auto_ptr.html">std::auto_ptr</a></span></span> <span><span class="t-mark-rev t-until-cxx17">(C++17 &#21069;)</span></span></span><span class="t-rev-inl t-since-cxx11"><span><span class="t-lc"><a href="cpp-memory-unique_ptr.html">std::unique_ptr</a></span> &#25110; <span class="t-lc"><a href="cpp-memory-shared_ptr.html">std::shared_ptr</a></span></span> <span><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></span></span>&#12290;&#36825;&#20123;&#25351;&#38024;&#20445;&#35777;&#22312;&#19978;&#36848;&#24773;&#24418;&#20013;&#25191;&#34892; delete &#34920;&#36798;&#24335;&#12290;</p>
<h3><span class="mw-headline" id=".E5.85.B3.E9.94.AE.E8.AF.8D">&#20851;&#38190;&#35789;</span></h3>
<p><a href="cpp-keyword-new.html"><tt>new</tt></a></p>
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">&#27880;&#35299;</span></h3>
<p><a rel="nofollow" class="external text" href="https://itanium-cxx-abi.github.io/cxx-abi/abi.html#array-cookies">Itanium C++ ABI</a> &#35201;&#27714;&#25968;&#32452;&#20998;&#37197;&#24320;&#38144;&#22312;&#21019;&#24314;&#30340;&#25968;&#32452;&#20803;&#32032;&#31867;&#22411;&#20026;&#21487;&#24179;&#20961;&#26512;&#26500;&#26102;&#20026;&#38646;&#12290;MSVC &#20063;&#26159;&#36825;&#26679;&#12290;</p>
<p>&#26576;&#20123;&#23454;&#29616;&#65288;&#22914; VS 2019 v16.7 &#21069;&#30340; MSVC&#65289;&#22312;&#20803;&#32032;&#31867;&#22411;&#38750;&#21487;&#24179;&#20961;&#26512;&#26500;&#30340;&#24773;&#20917;&#19979;&#38750;&#20998;&#37197;&#24067;&#32622;&#25968;&#32452; new &#26102;&#20250;&#26377;&#38750;&#38646;&#30340;&#25968;&#32452;&#20998;&#37197;&#24320;&#38144;&#65292;&#36825;&#20174; <a rel="nofollow" class="external text" href="https://wg21.link/p1969#2382">CWG2382</a> &#36215;&#19981;&#20877;&#36981;&#20174;&#26631;&#20934;&#12290;</p>
<p>&#21019;&#24314; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span>&#12289;<span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> <span class="t-rev-inl t-since-cxx17"><span>&#25110; <a href="cpp-types-byte.html"><tt>std::byte</tt></a></span> <span><span class="t-mark-rev t-since-cxx17">(C++17 &#36215;)</span></span></span> &#30340;&#25968;&#32452;&#30340;&#38750;&#20998;&#37197;&#24067;&#32622;&#25968;&#32452; new &#33021;&#29992;&#20110;&#22312;&#32473;&#23450;&#30340;&#23384;&#20648;&#21306;&#22495;&#38544;&#24335;&#21019;&#24314;&#23545;&#35937;&#65306;&#23427;&#32467;&#26463;&#19982;&#35813;&#25968;&#32452;&#37325;&#21472;&#30340;&#23545;&#35937;&#30340;&#29983;&#23384;&#26399;&#65292;&#28982;&#21518;&#22312;&#35813;&#25968;&#32452;&#20013;&#38544;&#24335;&#21019;&#24314;&#38544;&#24335;&#29983;&#23384;&#26399;&#31867;&#22411;&#30340;&#23545;&#35937;&#12290;</p>
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">&#32570;&#38519;&#25253;&#21578;</span></h3>
<p>&#19979;&#21015;&#26356;&#25913;&#34892;&#20026;&#30340;&#32570;&#38519;&#25253;&#21578;&#36861;&#28335;&#22320;&#24212;&#29992;&#20110;&#20197;&#21069;&#20986;&#29256;&#30340; C++ &#26631;&#20934;&#12290;</p>
<table class="dsctable" style="font-size:0.8em">
<tr>
<th>DR</th>
<th>&#24212;&#29992;&#20110;</th>
<th>&#20986;&#29256;&#26102;&#30340;&#34892;&#20026;</th>
<th>&#27491;&#30830;&#34892;&#20026;</th>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue74">CWG 74</a></td>
<td>C++98</td>
<td>&#31532;&#19968;&#32500;&#20013;&#30340;&#20540;&#24517;&#39035;&#25317;&#26377;&#25972;&#25968;&#31867;&#22411;</td>
<td>&#23481;&#35768;&#26522;&#20030;&#31867;&#22411;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue299">CWG 299</a></td>
<td>C++98</td>
<td>&#31532;&#19968;&#32500;&#20013;&#30340;&#20540;&#24517;&#39035;&#25317;&#26377;&#25972;&#25968;&#25110;&#26522;&#20030;&#31867;&#22411;</td>
<td>&#23481;&#35768;&#31867;&#31867;&#22411;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue1748">CWG 1748</a></td>
<td>C++98</td>
<td>&#35201;&#27714;&#38750;&#20998;&#37197;&#24067;&#32622; new &#26816;&#26597;&#23454;&#21442;&#26159;&#21542;&#20026;&#31354;</td>
<td>&#31354;&#23454;&#21442;&#23548;&#33268;&#26410;&#23450;&#20041;&#34892;&#20026;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue1992">CWG 1992</a></td>
<td>C++11</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">new <span class="br0">(</span><a href="cpp-memory-new-nothrow.html"><span class="kw699">std::<span class="me2">nothrow</span></span></a><span class="br0">)</span> <span class="kw4">int</span><span class="br0">[</span>N<span class="br0">]</span></span></span> &#21487;&#33021;&#25243;&#20986; <code>bad_array_new_length</code></td>
<td>&#25913;&#20026;&#36820;&#22238;&#31354;&#25351;&#38024;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.link/P1009R2">P1009R2</a></td>
<td>C++11</td>
<td>new &#34920;&#36798;&#24335;&#20013;&#19981;&#33021;&#25512;&#23548;&#25968;&#32452;&#36793;&#30028;</td>
<td>&#23481;&#35768;&#25512;&#23548;</td>
</tr>
<tr>
<td><a rel="nofollow" class="external text" href="https://wg21.cmeerw.net/cwg/issue2382">CWG 2382</a></td>
<td>C++98</td>
<td>&#38750;&#20998;&#37197;&#24067;&#32622;&#25968;&#32452; new &#33021;&#35201;&#27714;&#20998;&#37197;&#24320;&#38144;</td>
<td>&#19981;&#20801;&#35768;&#36825;&#31181;&#20998;&#37197;&#24320;&#38144;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li><a href="cpp-language-constructor.html">&#26500;&#36896;&#20989;&#25968;</a></li>
<li><a href="cpp-language-copy_elision.html">&#22797;&#21046;&#28040;&#38500;</a></li>
<li><a href="cpp-language-delete.html">delete</a></li>
<li><a href="cpp-language-destructor.html">&#26512;&#26500;&#20989;&#25968;</a></li>
<li><a href="cpp-language-initialization.html">&#21021;&#22987;&#21270;</a>
<ul>
<li><a href="cpp-language-aggregate_initialization.html">&#32858;&#21512;&#21021;&#22987;&#21270;</a></li>
<li><a href="cpp-language-default_initialization.html">&#40664;&#35748;&#21021;&#22987;&#21270;</a></li>
<li><a href="cpp-language-direct_initialization.html">&#30452;&#25509;&#21021;&#22987;&#21270;</a></li>
<li><a href="cpp-language-list_initialization.html">&#21015;&#34920;&#21021;&#22987;&#21270;</a></li>
</ul>
</li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>