無料はいくら無料になるかどうやって知るのでしょうか? 質問する

無料はいくら無料になるかどうやって知るのでしょうか? 質問する

C プログラミングでは、任意の種類のポインタを free の引数として渡すことができますが、free に割り当てられたメモリのサイズはどのようにしてわかるのでしょうか。関数にポインタを渡すときは、必ずサイズも渡す必要があります (つまり、10 要素の配列は、配列のサイズを知るために 10 をパラメーターとして受け取る必要があります)。しかし、free 関数にはサイズを渡す必要はありません。なぜそうしないのでしょうか。また、自分の関数で同じ手法を使用して、配列の長さという余分な変数を持ち歩かなくて済むようにすることはできますか。

ベストアンサー1

を呼び出すときはmalloc()、割り当てるメモリの量を指定します。実際に使用されるメモリの量はこれよりわずかに多く、(少なくとも) ブロックの大きさを記録する追加情報が含まれます。その他の情報には (確実に) アクセスすることはできません。また、アクセスすべきでもありません :-)。

を呼び出すとfree()、ブロックの大きさを調べるために追加情報が調べられます。

おすすめ記事