<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Cpp on memory</title>
    <link>https://mem.leabol.top/tags/cpp/</link>
    <description>Recent content in Cpp on memory</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 11 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mem.leabol.top/tags/cpp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>cpp的理解</title>
      <link>https://mem.leabol.top/posts/cpp/cpp/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/cpp/cpp/</guid>
      <description>&lt;p&gt;cpp这门语言与其他语言设计上的不同之处,在于cpp为了高效运行,没有采用在堆上分配对象通过GC管理对象。而是选择了一种更加高效但是更加困难的方式，通过尽量在栈上分配内存。因为栈上分配和释放内存只需要几条cpu指令就能完成，而在栈上则需要调用分配函数这需要更多的时间。而且栈的内存布局更加紧凑，对缓存更加的友好。但是也因为栈的先进先出的特性，这让对象的生命周期更加的难以管理，因为栈帧返回后直接就释放了。而且函数参数的传参也变得复杂，有很多的方式减少传参带来的开销，许多cpp特性就是为了解决这个问题产生的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>cpp线程的创建</title>
      <link>https://mem.leabol.top/posts/cpp/cpp%E7%BA%BF%E7%A8%8B/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/cpp/cpp%E7%BA%BF%E7%A8%8B/</guid>
      <description>&lt;h1 id=&#34;线程&#34;&gt;线程&lt;/h1&gt;
&lt;h2 id=&#34;线程的创建&#34;&gt;线程的创建&lt;/h2&gt;
&lt;p&gt;在cpp中线程的创建有两种形式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认构造&lt;/li&gt;
&lt;li&gt;传入可调用对象如: 函数, 函数对象, 对象的成员函数, 对象的静态函数, lambda表达式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;线程的构造函数&lt;strong&gt;会按值复制所有参数&lt;/strong&gt;,这点很重要, 对于想要传递引用的变量时,要使用&lt;code&gt;std::ref()&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>并发架构与同步原语</title>
      <link>https://mem.leabol.top/posts/cpp/%E5%B9%B6%E5%8F%91%E6%9E%B6%E6%9E%84%E4%B8%8E%E5%90%8C%E6%AD%A5%E5%8E%9F%E8%AF%AD/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/cpp/%E5%B9%B6%E5%8F%91%E6%9E%B6%E6%9E%84%E4%B8%8E%E5%90%8C%E6%AD%A5%E5%8E%9F%E8%AF%AD/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;为了追求极限性能，cpu硬件搞出了独立缓存(L1/L2)和乱序执行，但也留下了“数据不同步”和“顺序错乱”的烂摊子。硬件用MESI协议和内存屏障指令来修补。编程语言为了抹平不同平台(xv6/arm)的差异，制定了内存模型契约，让程序员通过指定内存序(relaxed/acquire/release/sc)来指挥编译器和cpu自动插入屏障。而程序员利用这些契约和底层的硬件CAS指令，最终构建出了无锁算法以及互斥锁等同步原语，为多线程并发提供了正确同步的基础设施。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
