gpt4 book ai didi

c++ - 关于在 C++ 代码中使用 realloc 实现的问题

转载 作者:太空狗 更新时间:2023-10-29 23:31:56 25 4
gpt4 key购买 nike

friend

在我们的 C++ 中,我目前使用 realloc 方法来调整 malloc 分配的内存大小。realloc() 用法如下完成

my_Struct *strPtr =(my_struct*)malloc(sizeof(my_Struct));

/* an later */

strPtr = (my_struct*)realloc(strPtr,sizeof(my_Struct)*NBR);

现在维基百科 (_http://en.wikipedia.org/wiki/Malloc) 说

如果相反

void *p = malloc(orig_size);

/* and later... */

p = realloc(p, big_size);

如果无法获得 big_size 字节的内存,p 的值为 NULL,我们不再有指向先前为 p 分配的内存的指针,从而造成内存泄漏

而且还说纠正上述错误的正确方法是

void *p = malloc(orig_size);

/* and later... */

void *tmp = realloc(p, big_size);

if (tmp != NULL)
{

p = tmp; /* OK, assign new, larger storage to p */

}

else

{

/* handle the problem somehow */

}

你能告诉我哪个是使用 realloc() 的最佳方式吗

同样,一旦我有了指向结构的指针,然后在稍后使用 realloc 时,我可以使用指向 void 的指针吗???

非常感谢

最佳答案

当然你必须防止realloc()的情况返回 NULL .这是一个内存分配,在 C 中(其中 realloc() )最常使用,我认为 C++ 程序员认为使用原始 realloc() 有点低级/qaint。调用,内存分配总是会失败。

直接用返回值覆盖指针是错误的,因为这会丢弃原始指针并在重新分配失败的情况下导致内存泄漏。

关于c++ - 关于在 C++ 代码中使用 realloc 实现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/626123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com