如果是以这种方式编写:引用ptr = (void *)realloc(ptr,size);
说它存在五种情况,第一种情况理想情况(这种占大多数),ptr不为空,size也不为0,内存空间也还足够,那么一切如你所愿,返回值是原来的待扩展的基址; 第二种情况,ptr不为空,size也不为0,内存空间不够,那么维持现状不变,但是返回值是NULL;第三种情况,ptr为0,size不为0,则类似于malloc(size);第四种情况,ptr不为0,size为0,则类似于free(ptr);第五种情况,ptr为0,size为0,不作任何操作,也不会报错,返回NULL.
说它存在五种情况,第一种情况理想情况(这种占大多数),ptr不为空,size也不为0,内存空间也还足够,那么一切如你所愿,返回值是原来的待扩展的基址; 第二种情况,ptr不为空,size也不为0,内存空间不够,那么维持现状不变,但是返回值是NULL;第三种情况,ptr为0,size不为0,则类似于malloc(size);第四种情况,ptr不为0,size为0,则类似于free(ptr);第五种情况,ptr为0,size为0,不作任何操作,也不会报错,返回NULL.