私はの形をとる構造体の静的配列でメモリ・ブロックをシミュレートしていますプロセスからメモリサイズを取得し、isAllocatedを1に設定し、PIDを要求プロセスのプロセスIDに変更することによって占有されているアレイの一部をマーキングする。メモリ割り当て解除シミュレーション問題
ここで、isAllocatedを0に、PIDを0に設定してこの配列から「メモリ」を割り当て解除するfree
のような関数を書きたいと思いますが、どうすればよいでしょうか?概念的には、この配列のインデックス0から始める必要があり、最初のインデックス(isAllocated = 1とゼロ以外のPIDの権利)をチェックする必要があることはわかっていますか? 私はすでにこれは、これまで実施しています:
void* custom_free(void* ptr, unsigned int size)
{
unsigned int blockIndex = 0, sizeCount = 0, startIndex = 0;
if(ptr){ free(ptr); }
}
編集:私はこのようなmemBlock構造のためのmallocコールを持っている私のコードで以前:
memBlock *block = (memBlock *)malloc(BLOCK_SIZE);
BLOCK_SIZE
が一定で定義されたプリプロセッサです
@WhiZTiM 'memBlock'構造体に示されているような構造体メンバのインライン初期化はC言語ではできませんが、C++で行われるため、C++タグの削除は時期尚早でした。 –
これはCではなくC++です。 C++の 'new' /' delete'演算子を使うべきです。 Cタグを削除します。 – Olaf
あなたは私のコメントを理解していないかもしれません。繰り返します:**これはCコードではありませんが、C++ ** CとC++は異なる言語であり、正しいタグを使用する必要があります。 – Olaf