[解決済み] フリーは、どのように無料化を知っているのですか?
2022-03-20 07:33:16
質問
C言語プログラミングでは、freeの引数に任意のポインタを渡すことができますが、freeは割り当てられたメモリのサイズをどのように知るのでしょうか?ある関数にポインタを渡すときは必ずサイズも渡さなければなりませんが(例えば10個の要素を持つ配列は、パラメータとして10を受け取らなければ配列のサイズがわかりません)、free関数にはサイズを渡す必要がありません。これと同じテクニックを自分の関数で使えば、配列の長さという余分な変数を持ち歩く必要がなくなるのでしょうか?
どのように解決するのですか?
を呼び出すと
malloc()
は、確保するメモリ量を指定します。実際に使用されるメモリ量はこれより少し多く、ブロックの大きさを(少なくとも)記録する余分な情報が含まれています。この他の情報には(確実に)アクセスできませんし、アクセスする必要もありません :-)。
を呼び出すと
free()
は、単にブロックの大きさを調べるために余分な情報を見るだけです。
関連
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み] C++の関数に2次元配列を渡す
-
[解決済み】NULL終端文字列の根拠は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] CコードでEOFを表現する?
-
[解決済み] なぜmemsetではなくbzeroを使用するのですか?
-
[解決済み] ソケットアクセプト - "開かれているファイルが多すぎる"
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] LD_PRELOADのトリックとは何ですか?