realloc 不能保证重新分配后的内存空间和原来的内存空间指在同一内存地址, 它返回的指针很可能指向一个新的地址。
所以,在代码中,必须把realloc返回的值,重新赋给 p 如:
p = (char *) realloc (p, old_size + new_size);
甚至,你可以传一个空指针(0)给 realloc ,则此时realloc 作用完全相当于malloc。
int* p = (char *) realloc (0,old_size + new_size); //全新分配一个内存空间,作用完全等同于以下这行: int* p = (char *) malloc(old_size + new_size);
calloc(len, size)与malloc相似,参数len为申请地址的单位元素长度,size为元素个数,如:
char* p;
p=(char*)calloc(sizeof(char),1000);
阅读(1266) | 评论(0) | 转发(0) |