重複の可能性:
割り当てられたブロックのサイズを照会する関数はありますか?
返されたポインタのみを使用してmallocのサイズを取得する
malloc関数を使用してint*xに渡されるバイト数をユーザーに指定させたとしましょう。整数に割り当てられた実際のバイト数を判別する方法はありますか?
重複の可能性:
割り当てられたブロックのサイズを照会する関数はありますか?
返されたポインタのみを使用してmallocのサイズを取得する
malloc関数を使用してint*xに渡されるバイト数をユーザーに指定させたとしましょう。整数に割り当てられた実際のバイト数を判別する方法はありますか?
ポータブルな方法はありません。言語標準はそれを行うための手段を提供していません。
malloc
各実装は、もちろん、edメモリのサイズを追跡して正しく実行できるようにfree
する必要があるため、その情報を取得する手段を提供する場合があります。glibcmalloc.h
には、プロトタイプがあります
size_t malloc_usable_size(void *);
これにより、渡されたポインタに割り当てられた使用可能なバイト数を取得できますが、多くの場合、malloc
呼び出しで要求されたバイト数よりも大きくなります。他の実装は、その種の情報を取得するための他の手段を提供する場合があります。