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

128 lines
11 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>&#20869;&#23384;&#27169;&#22411;</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-c_language_memory_model skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#20869;&#23384;&#27169;&#22411;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="c.html">c</a>&lrm; | <a href="c-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#20026; C &#25277;&#35937;&#26426;&#30340;&#30446;&#30340;&#65292;&#23450;&#20041;&#35745;&#31639;&#26426;&#20869;&#23384;&#23384;&#20648;&#30340;&#35821;&#20041;&#12290;</p>
<p>&#21487;&#29992;&#20110; C &#31243;&#24207;&#30340;&#25968;&#25454;&#23384;&#20648;&#65288;&#20869;&#23384;&#65289;&#26159;&#19968;&#20010;&#25110;&#22810;&#20010;&#36830;&#32493;<i>&#23383;&#33410;</i>&#30340;&#24207;&#21015;&#12290;&#20869;&#23384;&#20013;&#27599;&#20010;&#23383;&#33410;&#25317;&#26377;&#21807;&#19968;&#30340;<i>&#22320;&#22336;</i>&#12290;</p>
<h3><span class="mw-headline" id=".E5.AD.97.E8.8A.82">&#23383;&#33410;</span></h3>
<p><i>&#23383;&#33410;</i>&#26159;&#20869;&#23384;&#30340;&#26368;&#23567;&#21487;&#23547;&#22336;&#21333;&#20803;&#12290;&#23427;&#23450;&#20041;&#20026;&#19968;&#31995;&#21015;&#36830;&#32493;&#30340;&#20301;&#65292;&#36275;&#20197;&#20445;&#26377;&#20219;&#20309;<i>&#22522;&#30784;&#25191;&#34892;&#23383;&#31526;&#38598;</i>&#65288;&#35201;&#27714; <a href="c-language-translation_phases.html">96 &#20010;&#23383;&#31526;</a>&#26159;&#21333;&#23383;&#33410;&#65289;&#12290; C &#25903;&#25345;&#22823;&#23567;&#20026; 8 &#20301;&#25110;&#26356;&#22810;&#30340;&#23383;&#33410;&#12290;</p>
<p><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span></span></span> &#12289; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> &#21450; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span></span></span> <a href="c-language-types.html">&#31867;&#22411;</a>&#30340;&#23384;&#20648;&#21644;<a href="c-language-object.html">&#20540;&#34920;&#31034;</a>&#37117;&#20351;&#29992;&#19968;&#20010;&#23383;&#33410;&#12290;&#23383;&#33410;&#30340;&#20301;&#25968;&#21487;&#20197;&#29992; <span class="t-lc"><a href="c-types-limits.html">CHAR_BIT</a></span> &#35775;&#38382;&#12290;</p>
<p>&#23545;&#20110;&#29992;&#23383;&#33410;&#34920;&#31034;&#20854;&#20182;&#22522;&#30784;&#31867;&#22411;&#30340;&#65288;&#21253;&#21547;&#22823;&#31471;&#19982;&#23567;&#31471;&#20869;&#23384;&#24067;&#23616;&#65289;&#65292;&#35265;<a href="c-language-object.html#.E5.AF.B9.E8.B1.A1.E8.A1.A8.E7.A4.BA">&#23545;&#35937;&#34920;&#31034;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E5.86.85.E5.AD.98.E4.BD.8D.E7.BD.AE">&#20869;&#23384;&#20301;&#32622;</span></h3>
<p><i>&#20869;&#23384;&#20301;&#32622;</i>&#26159;</p>
<ul>
<li>&#19968;&#20010;<a href="c-language-types.html#.E5.AF.B9.E8.B1.A1.E7.BB.84.E5.88.AB">&#26631;&#37327;&#31867;&#22411;</a>&#65288;&#31639;&#26415;&#31867;&#22411;&#12289;&#25351;&#38024;&#31867;&#22411;&#12289;&#26522;&#20030;&#31867;&#22411;&#65289;&#30340;&#23545;&#35937;</li>
<li>&#25110;&#38750;&#38646;&#38271;<a href="c-language-bit_field.html">&#20301;&#22495;</a>&#30340;&#26368;&#22823;&#36830;&#32493;&#24207;&#21015;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw1">struct</span> S <span class="br0">{</span>
<span class="kw4">char</span> a<span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #1</span>
<span class="kw4">int</span> b <span class="sy4">:</span> <span class="nu0">5</span><span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #2</span>
<span class="kw4">int</span> c <span class="sy4">:</span> <span class="nu0">11</span>, <span class="co1">// &#20869;&#23384;&#20301;&#32622; #2 &#65288;&#36830;&#32493;&#65289;</span>
<span class="sy4">:</span> <span class="nu0">0</span>,
d <span class="sy4">:</span> <span class="nu0">8</span><span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #3</span>
<span class="kw1">struct</span> <span class="br0">{</span>
<span class="kw4">int</span> ee <span class="sy4">:</span> <span class="nu0">8</span><span class="sy4">;</span> <span class="co1">// &#20869;&#23384;&#20301;&#32622; #4</span>
<span class="br0">}</span> e<span class="sy4">;</span>
<span class="br0">}</span> obj<span class="sy4">;</span> <span class="co1">// &#23545;&#35937;&ldquo; obj &rdquo;&#30001; 4 &#20010;&#20998;&#31163;&#30340;&#20869;&#23384;&#20301;&#32622;&#32452;&#25104;</span></pre></div>
</div>
<table class="t-rev-begin">
<tr class="t-rev t-since-c11">
<td>
<h3><span class="mw-headline" id=".E7.BA.BF.E7.A8.8B.E5.8F.8A.E6.95.B0.E6.8D.AE.E7.AB.9E.E4.BA.89">&#32447;&#31243;&#21450;&#25968;&#25454;&#31454;&#20105;</span></h3>
<p>&#25191;&#34892;&#30340;&#32447;&#31243;&#26159;&#19968;&#20010;&#31243;&#24207;&#20013;&#30340;&#25511;&#21046;&#27969;&#65292;&#23427;&#20197;&#35843;&#29992;&#39030;&#23618;&#20989;&#25968; <span class="t-lc"><a href="c-thread-thrd_create.html">thrd_create</a></span> &#25110;&#20854;&#20182;&#26041;&#27861;&#36215;&#22987;&#12290;</p>
<p>&#20219;&#24847;&#32447;&#31243;&#21487;&#28508;&#22312;&#22320;&#35775;&#38382;&#31243;&#24207;&#20013;&#30340;&#20219;&#24847;&#23545;&#35937;&#65288;&#25317;&#26377;&#33258;&#21160;&#21450;&#32447;&#31243;&#23616;&#22495;<a href="c-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#30340;&#23545;&#35937;&#20173;&#33021;&#36890;&#36807;&#25351;&#38024;&#34987;&#21478;&#19968;&#32447;&#31243;&#35775;&#38382;&#65289;&#12290;</p>
<p>&#25191;&#34892;&#30340;&#19981;&#21516;&#32447;&#31243;&#22987;&#32456;&#20801;&#35768;&#21516;&#26102;&#35775;&#38382;&#65288;&#35835;&#25110;&#20462;&#25913;&#65289;&#19981;&#21516;&#30340;<i>&#20869;&#23384;&#20301;&#32622;</i>&#65292;&#36825;&#27809;&#26377;&#20914;&#31361;&#21644;&#21516;&#27493;&#35201;&#27714;&#65288;&#27880;&#24847;&#21516;&#26102;&#26356;&#26032;&#20108;&#20010;&#21516;&#19968;&#32467;&#26500;&#20307;&#20869;&#30340;&#38750;&#21407;&#23376;&#20301;&#22495;&#26159;&#19981;&#23433;&#20840;&#30340;&#65292;&#33509;&#25152;&#26377;&#22768;&#26126;&#20110;&#20854;&#38388;&#30340;&#25104;&#21592;&#20134;&#20026;&#65288;&#38750;&#38646;&#38271;&#65289;&#20301;&#22495;&#65292;&#19981;&#31649;&#37027;&#20123;&#25554;&#20837;&#30340;&#20301;&#22495;&#22823;&#23567;&#26159;&#22810;&#23569;&#65289;&#12290;</p>
<p>&#19968;&#20010;&#34920;&#36798;&#24335;&#30340;<a href="c-language-eval_order.html">&#27714;&#20540;</a>&#20889;&#20837;&#19968;&#20010;&#20869;&#23384;&#20301;&#32622;&#65292;&#32780;&#21478;&#19968;&#27714;&#20540;&#35835;&#21462;&#25110;&#20462;&#25913;&#21516;&#19968;&#20869;&#23384;&#20301;&#32622;&#26102;&#65292;&#25105;&#20204;&#31216;&#36825;&#20004;&#20010;&#34920;&#36798;&#24335;<i>&#20914;&#31361;</i>&#12290;&#25317;&#26377;&#20004;&#20010;&#20914;&#31361;&#34920;&#36798;&#24335;&#30340;&#31243;&#24207;&#26377;<i>&#25968;&#25454;&#31454;&#20105;</i>&#65292;&#38500;&#38750;</p>
<ul>
<li>&#20004;&#20010;&#20914;&#31361;&#27714;&#20540;&#26159;<a href="c-language-atomic.html">&#21407;&#23376;&#25805;&#20316;</a></li>
<li>&#19968;&#20010;&#20914;&#31361;&#27714;&#20540;<i>&#20808;&#21457;&#29983;&#20110;</i>&#21478;&#19968;&#20010;&#65288;&#35265; <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order</a></span> &#65289;</li>
</ul>
<p>&#33509;&#21457;&#29983;&#25968;&#25454;&#31454;&#20105;&#65292;&#21017;&#31243;&#24207;&#34892;&#20026;&#26410;&#23450;&#20041;&#12290;</p>
<p>&#65288;&#29305;&#21035;&#26159;&#65292; <span class="t-lc"><a href="c-thread-mtx_unlock.html">mtx_unlock</a></span> &#19982;&#21478;&#19968;&#32447;&#31243;&#30340; <span class="t-lc"><a href="c-thread-mtx_lock.html">mtx_lock</a></span> <i>&#21516;&#27493;</i>&#65292;&#20174;&#32780;<i>&#20808;&#21457;&#29983;&#20110;</i>&#21518;&#32773;&#65292;&#36825;&#20351;&#24471;&#21487;&#20197;&#29992;&#20114;&#26021;&#38145;&#20445;&#35777;&#25490;&#38500;&#25968;&#25454;&#31454;&#20105;&#65289;</p>
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
<tr>
<td class="mbox-empty-cell"></td>
<td class="mbox-text" style="">&#26412;&#33410;&#26410;&#23436;&#25104;<br />
&#21407;&#22240;&#65306;&#19968;&#25110;&#20108;&#20010;&#23567;&#31034;&#20363;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.86.85.E5.AD.98.E9.A1.BA.E5.BA.8F">&#20869;&#23384;&#39034;&#24207;</span></h3>
<p>&#32447;&#31243;&#20174;&#19968;&#20010;&#20869;&#23384;&#20301;&#32622;&#35835;&#21462;&#20540;&#26102;&#65292;&#23427;&#21487;&#33021;&#30475;&#21040;&#21021;&#22987;&#20540;&#12289;&#34987;&#21516;&#19968;&#32447;&#31243;&#20889;&#20837;&#30340;&#20540;&#65292;&#25110;&#34987;&#20854;&#20182;&#32447;&#31243;&#20889;&#20837;&#30340;&#20540;&#12290;&#20851;&#20110;&#32447;&#31243;&#25152;&#20570;&#30340;&#20889;&#20837;&#23545;&#20854;&#20182;&#32447;&#31243;&#21464;&#24471;&#21487;&#35265;&#30340;&#39034;&#24207;&#32454;&#33410;&#65292;&#35265; <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order</a></span> &#12290;</p>
</td>
<td><span class="t-mark-rev t-since-c11">(C11 &#36215;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">&#24341;&#29992;</span></h3>
<div class="t-ref-std-11">
<ul>
<li>C11 &#26631;&#20934;&#65288;ISO/IEC 9899:2011&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.6 byte (p: 4)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>3.14 memory location (p: 5)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>5.1.2.4 Multi-threaded executions and data races (p: 17-21)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c99">
<ul>
<li>C99 &#26631;&#20934;&#65288;ISO/IEC 9899:1999&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.6 byte (p: 4)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c89">
<ul>
<li>C89/C90 &#26631;&#20934;&#65288;ISO/IEC 9899:1990&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>1.6 DEFINITIONS OF TERMS</li>
</ul>
</dd>
</dl>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
</div>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>