title: Getting the size of the data of a Pointer
body: <p>I tried the following code in order to see how to get size of the data of a pointer:</p>
  
  <pre><code> #include &lt;stdio.h&gt;
   #include &lt;stdlib.h&gt;
   #include &lt;string.h&gt;
  
   int main(){
    char *test_char_ptr = "This is just a test";
    int *test_int_ptr = (int *) malloc(16*sizeof(int));
    for(int i = 0; i&lt;16; i++){
      test_int_ptr[i] = i;
    }
    printf("%s\n",test_char_ptr);
    printf("Test char 1: %d\n", (int)sizeof test_char_ptr );
    printf("Test char 2:%d\n", (int)sizeof *test_char_ptr );
    printf("Test char 3: %d\n", (int)((strlen(test_char_ptr)+1) * sizeof(char)));
    printf("Test int 1:%d\n", (int)sizeof test_int_ptr );
    printf("Test int 2:%d\n", (int)sizeof *test_int_ptr );
    return EXIT_SUCCESS;
   }
  </code></pre>
  
  <p>And code's output is(On 32 bit gcc 4.3):</p>
  
  <pre><code>This is just a test
  Test char 1: 4
  Test char 2:1
  Test char 3: 20
  Test int 1:4
  Test int 2:4
  </code></pre>
  
  <p>I thought that sizeof(*test_char_ptr) would give me the sizeof the data inside of the *test_char_ptr. But instead it gave me 1 , which i think that is the sizeof char instead of the data. The same is for the test_int_ptr. Long story short, my question is how can i get the sizeof data inside a pointer or dynamically memory allocated array.</p>