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);
}