title: Where does .NET place the String value?
body: <p>I am using SOS debug extension dll to check the memory layout of a String type, and below is the result.</p>
  
  <p><strong>!dso</strong></p>
  
  <pre><code>ESP/REG  Object   Name
  
  0015EFC0 01c6b9cc System.String    hello,world
  </code></pre>
  
  <p><strong>!do 01c6b9cc</strong></p>
  
  <pre><code>Name:        System.String
  
  MethodTable: 6de3f9ac
  
  EEClass:     6db78bb0
  
  Size:        36(0x24) bytes
  
  File:        C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089&gt;\mscorlib.dll
  
  String:      hello,world
  
  Fields:
        MT    Field   Offset                 Type VT     Attr    Value Name
  
  6de42978  40000ed        4         System.Int32  1 instance       11 m_stringLength
  
  6de41dc8  40000ee        8          System.Char  1 instance       68 m_firstChar
  
  6de3f9ac  40000ef        8        System.String  0   shared   static Empty
  
      &gt;&gt; Domain:Value  00331488:01c61228 &lt;&lt;
  </code></pre>
  
  <p>Now I am wondering, where exactly is the string value "hello world" stored?</p>
  
  <p>Thanks.</p>