malloc() code:
#include<stdio.h> #include<stdlib.h> int main() { int *p; int n; printf("how many integers:"); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); if(p==NULL) { printf("Unable to allocate memory\n Exiting the program"); exit(1); //abnormal situation exit(0) is normal situation } int i; for(i=0; i<n; i++) { printf("Next number: "); scanf("%d",&p[i]); //&(p+i) } printf("\ncontents of the array: "); for(i=0; i<n; i++) { printf("%4d",*(p+i));//as pointer is contiguous in array } free(p); //free up the memory to save it from the extra memory leak and wastage return 0; }
calloc() code:
#include<stdio.h> #include<stdlib.h> int main() { int *p; int n; printf("how many integers:"); scanf("%d",&n); p=(int*)calloc(n,sizeof(int)); //function is taking specific designed input if(p==NULL) { printf("Unable to allocate memory\n Exiting the program"); exit(1); //abnormal situation exit(0) is normal situation } int i; for(i=0; i<n; i++) { printf("Next number: "); scanf("%d",&p[i]); //&(p+i) } printf("\ncontents of the array: "); for(i=0; i<n; i++) { printf("%4d",*(p+i));//as pointer is contiguous in array } free(p); //free up the memory to save it from the extra memory leak and wastage return 0; }
calloc vs malloc()
calloc initialized each byte with zero
realloc()
code:
#include<stdio.h> #include<stdlib.h> int main() { int *p; int n; printf("how many integers:"); scanf("%d",&n); p=(int*)calloc(n,sizeof(int)); if(p==NULL) { printf("Unable to allocate memory\n Exiting the program"); exit(1); //abnormal situation exit(0) is normal situation } int i; for(i=0; i<n; i++) { printf("Next number: "); scanf("%d",&p[i]); //&(p+i) } printf("\ncontents of the array: "); for(i=0; i<n; i++) { printf("%4d",*(p+i));//as pointer is contiguous in array } int new_no=n+3; p=(int*)realloc(p,new_no*sizeof(int)); //existing p //grow it or shrink it if(p==NULL) //program does not fail in runtime { printf("Memory allocation failed.\n"); exit(1); } *(p+n)=10; *(p+n+1)=20; *(p+n+2)=30; printf("\n New Content of the Array"); for(i=0;i<new_no;i++) { printf("%4d",*(p+i)); } free(p); //free up the memory to save it from the extra memory leak and wastage return 0; }
theory vid: