Linux: malloc()的指向指针发生指向偏移后,释放前需要将指针指向复原。
#include <stdlib.h>
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <string.h>
 #include <time.h>
void main()
 {
 unsigned int seed;
 srand(seed);
int * p =(int *)malloc(sizeof(int)*10);
#define MAX 10
for (int i = 0; i < MAX ; i++)
{
    p[i] = rand()%100;
}
for (int i = 0; i < MAX ; i++)
{
    printf("  %p: %d\n",&p[i],p[i]);
}
printf("p 地址: %p\n", p);
for (int i = 0; i < MAX ; i++)
{
    // printf("  %p: %d\n",p,*p);
    // p++;
    printf("  %p: %d\n",p,*p++); //p++操作后指向发生变化
}
printf("  ++操作后p的地址: %p\n", p);
p-=10;//需要将p指向复原再释放
printf("  复原p的地址: %p\n", p);
free(p);
}
结果:




















