title: Subtraction of non-divisible pointer addresses
body: <p>Is subtraction of non-divisible pointer addresses defined in C? In C++?</p>
  
  <p>Here's an example:</p>
  
  <pre><code>void* p = malloc(64);
  
  int* one = (int*)((char*)p);
  int* two = (int*)((char*)p + 7);
  
  printf("%x %x %d %d\n", one, two, sizeof(int), two - one);
  </code></pre>
  
  <p><a href="http://ideone.com/qHUk6N" rel="noreferrer">Ideone link</a>.</p>
  
  <p>I get the output <code>8a94008 8a9400f 4 1</code>, so it seems like it does the division and truncates the remainder. Is the behavior defined?</p>