c - 在 C 中使用 realloc 和 malloc

标签 c malloc realloc

我有点理解 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?
}

最佳答案

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

// otherwise do a true realloc

至于

What if there is not a contigious size of the size wanted.

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

关于c - 在 C 中使用 realloc 和 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325629/

相关文章:

c - 将字符串分配给动态 int 数组时的重新分配问题

c++ - 无法将 'tbb/atomic.h' 与 Intel 编译器一起使用

c - 如何使用 getch() 在数组中添加一个 2 位数字作为单个条目?

c - 在我的 C 程序中使用 gdb 需要帮助

c - 为什么会泄漏内存? (指针数组 C)

c - 为 C 中的指针重新分配比最初更少的内存

c - "Freezing"以编程方式整个应用程序

c - 简单测试程序中无法解释的 malloc 调用 : malloc project

c - 动态内存 : malloc and realloc

c - 在 realloc 之后组织指针数组