#include <stdlib.h>
#include <stdio.h>
#define SIZE 15 
int main()
  {

	  int *a, i;
	  
      a = (int*) malloc(SIZE*sizeof(int));

      for (i=0; i<SIZE; i++)
          *(a + i) = i * i;
      for (i=0; i<SIZE; i++)
          printf("%d\n", *a++);
	  
      
	  free(a);
      return 0;
  }

Why Is My Program Crashing??

the parameter to free() must be the same pointer that was returned by malloc(), calloc() or realloc(). Your program destroyed that pointer in the printf() statement.

Why don't you use array a just like any other array instead of using pointer arithemic

for (i=0; i<SIZE; i++)
          a[i] = i * i;

for (i=0; i<SIZE; i++)
          printf("%d\n", a[i]);

can u correct the previous code

sunny? Um... It's a copy/paste fix.