-5

我有点理解 realloc 的作用,但是当尝试重新分配一定大小的内存时,我似乎并没有想到。如果没有所需大小的连续大小怎么办。或者,如果 null 作为指针传入,或者传入的大小为 0。我知道如果大小为 0,那么它想要释放该内存。问题:使用 malloc 和 realloc?

void *realloc(void *ptr, size_t newsize)
{
  if(newsize == 0)
    free(ptr);
  if(ptr == NULL)
    //does something
  //how does it malloc a size and copy everything over?
}
4

1 回答 1

0
if (newsize == 0) {
    free(ptr);
    return;
}
if (ptr == NULL)
    return malloc(size);

// otherwise do a true realloc

至于

如果没有所需大小的连续大小怎么办。

然后realloc返回NULL并设置errno以指示错误。

于 2013-05-01T20:09:26.723 回答