title: What is a memory location?
body: <p>Surprisingly little information turns up by the search engine. The book <em>C++ Concurrency In Action</em>, in chapter 5 states:</p>
  
  <blockquote>
    <p>In C++, it's all about objects and memory locations.</p>
  </blockquote>
  
  <p>Then later,</p>
  
  <blockquote>
    <p>Whatever its type, an object is stored in one or more <em>memory locations</em>. Each such memory location is either an object (or subobject) of a scalar type such as <code>unsigned short</code> or <code>my_class*</code> or a sequence of adjacent bit fields.</p>
  </blockquote>
  
  <p>The emphasis is as printed in the book, so clearly a fundamental concept, yet there is no definition.</p>
  
  <p>So, what <em>is</em> it? Is it a universal concept or something more narrowly defined in the C++11 standard? How should I think about it in terms of 32- vs 64-bit architecture and the CPU registers? What does it mean that a bit field (or rather, a series of adjacent bit fields of non-zero length) are part of the same memory location? This last statement implies that a memory location can store data of arbitrary length.</p>
  
  <p>If the above quote <em>is</em> the definition, then I am hoping to see a discussion helping to develop intuitive understanding of the concept.</p>