#include #include int main() { int *ps, *pr, *pt; char* str; int i; ps = (int *) malloc(4); pr = (int *) malloc(4); printf("ps is %p\n", ps); printf("pr is %p\n", pr); *ps = 5; printf("ps is %p *ps is %d\n",ps,*ps); printf("pr is %p *pr is %d\n",pr,*pr); // *pr has not been initialized free (ps); // free (ps); // Generates error free (pr); printf("\n"); str= (char *) calloc(8,sizeof(char)); ps = (int *) calloc(1,sizeof(int)); pr = (int *) calloc(1,sizeof(int)); pt = (int *) calloc(1,sizeof(int)); printf("ps is %p\n", ps); printf("pr is %p\n", pr); printf("pt is %p\n", pt); printf("str is %p\n", str); *ps = 5; *pt = 7; for(i=0; i<8; i++) {str[i]='a'; } printf("ps is %p *ps is %d\n",ps,*ps); printf("pr is %p *pr is %d\n",pr,*pr); printf("pt is %p *pt is %d\n",pt,*pt); for (i=0; i<8; i++) printf("-%c",str[i]); printf("\n"); free (ps); free (pr); free (pt); free (str); printf("\n"); str= (char *) calloc(8,sizeof(char)); ps = (int *) calloc(1,sizeof(int)); pr = (int *) calloc(1,sizeof(int)); pt = (int *) calloc(1,sizeof(int)); for(i=0; i<8; i++) {str[i]='f'; } pr = 0; // will cause segmentation fault later on printf("ps is %p\n", ps); printf("pr is %p\n", pr); printf("pt is %p\n", pt); printf("str is %p\n", str); *ps = 5; for(i=0; i<8; i++) str[i]='a'; printf("ps is %p *ps is %d\n",ps,*ps); printf("pt is %p *pt is %d\n",pt,*pt); for (i=0; i<8; i++) printf("-%c",str[i]); printf("\n"); // printf("pr is %p *pr is %d\n",pr,*pr); // Segmentation fault free (ps); free (pr); free (pt); free (str); printf("\n"); }