#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int *arr;
int *tmpArr;
int *pCur;
unsigned int i;
arr = malloc(10*sizeof arr[0]);
printf("arr adress:%p\narr ",(void*)arr);
if(!arr)
{
printf("memory allocation error.\n");
return 1;
}
for(i=0; i<10; ++i)
{
arr[i] = i;
printf("%d ",arr[i]);
}
printf("\npCur ");
pCur = arr;
printf("%d ", *pCur);
pCur++;
printf("%d \n", *pCur);
//increase
tmpArr = realloc(arr,12*sizeof arr[0]);
if(!tmpArr)
{
printf("memory reallocation error (1).\n");
free(arr);
return 1;
}
arr = tmpArr;
printf("arr adress:%p\narr ",(void*)arr);
arr[10]=10;
arr[11]=11;
for(i=0; i<12; ++i) printf("%d ",arr[i]);
printf("\npCur ");
pCur = arr;
printf("%d ", *pCur);
pCur++;
printf("%d \n", *pCur);
//shrink
tmpArr = realloc(arr,8*sizeof arr[0]);
if(!tmpArr)
{
printf("memory reallocation error (2).\n");
free(arr);
return 1;
}
arr = tmpArr;
printf("arr adress:%p\narr ",(void*)arr);
for(i=0; i<8; ++i) printf("%d ",arr[i]);
printf("\npCur ");
pCur = arr;
printf("%d ", *pCur);
pCur++;
printf("%d \n", *pCur);
free(arr);
return 0;
}
/*
output:
arr adress:0x556d786f4260
arr 0 1 2 3 4 5 6 7 8 9
pCur 0 1
arr adress:0x556d786f46a0
arr 0 1 2 3 4 5 6 7 8 9 10 11
pCur 0 1
arr adress:0x556d786f46a0
arr 0 1 2 3 4 5 6 7
pCur 0 1
*/
Comments