calloc
を使用して割り当てられたバッファのサイズをbyte
に知りたい。結果ヒープに割り当てられたバッファのサイズを調べる
double *buf = (double *) calloc(5, sizeof(double));
printf("%zu \n", sizeof(buf));
8私は一つの要素に変更された場合でも、私はまだ8私の質問があります:私のマシンで次のようにテストすることにより
- それは私だけ掛けることができますことを意味していますバイトでバッファサイズを得るには8 * 5? (私は
sizeof
が40を返すと思った)。 - バッファのサイズをバイトで返すマクロを作る方法(チェックするバッファは
char
,int
,double
、またはfloat
)?
いずれのアイデアもありがとうございます。
Calloc()はmalloc()を呼び出すため、malloc.cは5322行以上のコードに渡っているため、メモリ割り当て関数の引数として渡す必要があります。 free()はcalloc()によって使用されるパラメータについて何も知らないので、私にとって意味があります – Marichyasana
@Marichyasanaあなたのコメントはありません ' about [tag:c]、それはabout * some(仮説?)の実装です。実装はfree()が動作するために必要な情報をどのように格納するかを自由に選択できます。もちろん、次のブロックへのポインタはおそらくもっと簡単でしょう。もちろん、 'sizeOfChunk()'関数を提供する独自の 'malloc()'を実装することもできます。言語に*拡張*すること。そして、btw、無意味なことに、チャンクを割り当てるプログラムはサイズを知っています(割り当て関数に渡しました)。 –