朋友们
在我们的 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 的指针吗?
非常感谢