title: Dynamic memory allocation and pointers?
body: <p>I'm trying to understand the difference between these two snippets. Both of them work fine.</p>
  
  <pre><code>int rows = 4;
  
  int **p = malloc(rows * sizeof(int **)); //it works without type casting
  </code></pre>
  
  <p>and</p>
  
  <pre><code>int**p = (int **) malloc(rows * sizeof(int*)); // using casting method.
  </code></pre>
  
  <p>What does <code>sizeof(int**)</code> mean?</p>