ポインタを解放するという理論的な質問があります。長さを知らずにポインタを解放する
私はいくつかの男(プログラム自体、またはOS)はポインタとその長さを記録しなければならないと思います。どうして?
float* pointer1 = malloc(100 * sizeof(float));
例:ここには浮動ポインタがあります。誰かが私のポインタ1配列の長さは何ですか?実行時に関数/メソッドを呼び出すと、そのポインタの長さを取得する方法はありませんか?だから、プログラム(またはOS)が実行時に、それの本当の長さを知らなくても、ポインタのメモリ部を解放することができますどのように:
free(pointer1);
プログラムを解放するポインタの長さを知っていた場合は、なぜ私たちはその情報を入手することができず、長さを追跡するためにいくつかの他の方法を使用することができません。例:
struct floatArray
{
float* pointer;
int length;
}
この問題は本当に興味があります。私は、OSがどのようにポインタの長さを気にかけているかを知りたい。
ありがとう、
Sait。
「ポインタを解放する」のようなものはありません。あなたはmallocによって得られた*オブジェクト*を解放します。そのオブジェクトへのポインタは、そのオブジェクトを解放する目的で参照する方法ですが、ポインタを解放していません。あなたはそのオブジェクトを解放しています。 –
@R ..はい、そうです。私は言っておくべきである: "ポインタを使用してメモリに格納されたオブジェクトを解放する"。 +1。 – Sait