友達
私たちの 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へのポインターを使用できますか???
どうもありがとう