问题补充说明:#include "stdio.h"#include "stdlib.h"void main(){ int *num,*arr; int i; num = (int *)malloc(sizeof(int) * 10); for(i=0; i<10; i++) { num[i] = i+1; } printf("%o\n",num); arr = num; num = (int *)realloc(num, sizeof(int) * 9); //printf("%d\n",arr[1]); printf("%o\n",arr); printf("%o\n",num);}realloc函数重新辟内存空间num值与前num值辟功前num(arr)所指向空间释放输arr【1】取原num【1】值三输结照理说三都啊realloc函数返址值原num值realloc函数返址值原指针值几率定否与编译器关
楼主对r迅ealloc函数的功能不是雷鲜免审束太了解:用realloc函数重新在堆上分配内存时,若在原来所在的位置(即你程序中的用mallo来自c函数分配的num)的基础上能进行扩展(扩大或者收缩),则在原来的位置进行从新分配。如果在原来的位置处无法从新分配更多连续的空间,则在堆的其他地方进行分配,并把之前的位置处的值全部复制进来(这时新旧地址就不一样了)。这里你是360问答缩小了原始空间,显在草数交然可以在原始空间的基玉运有更术需执酒础上进行修改,所以才有楼主所看到的结果。
标签:realloc,函数