malloc
を使用してメモリを割り当て、成功したことを確認したいと思います。何かのようなもの:
if (!(new_list=(vlist)malloc(sizeof (var_list))))
return -1;
成功を確認するにはどうすればよいですか?
malloc
は、失敗するとnullポインタを返します。したがって、受け取ったものがnullでない場合は、有効なメモリブロックを指します。
NULL
はif
ステートメントでfalseと評価されるため、非常に簡単な方法で確認できます。
value = malloc(...);
if(value)
{
// value isn't null
}
else
{
// value is null
}
マニュアルページ:
成功した場合、
calloc()
、malloc()
、realloc()
、reallocf()
、およびvalloc()
関数は割り当てられたメモリへのポインタを返します。エラーが発生した場合は、NULL
ポインターを返し、errno
をENOMEM
に設定します。
new_list=(vlist)malloc(sizeof (var_list)
if (new_list != NULL) {
/* succeeded */
} else {
/* failed */
}
あなたがすでにエラーをテストしているコードですが、私は通常、割り当てを記述し、2つの別々の行としてチェックします。
_new_list = malloc(sizeof *new_list);
if (!new_list)
/* error handling here */;
_
(2つの小さな変更に注意してください。戻り値をキャストしないでください。不一致の可能性を減らすために、型ではなく変数からサイズを取得します)。
malloc()
が失敗すると、nullポインターが返されます。これは、falseである唯一のポインター値です。
あなたが持っているエラー処理は単に_return -1;
_です-呼び出し関数でそれをどのように処理するかは本当にあなた次第です。