私はバッファに複数の96ビットオブジェクト(一度に32ビット - 3x int32)を書き込むクラスと、同じバッファから読み込みたいバッファという2つのクラスを持っています。バッファへの読み書き
第1クラス(ライター)はメモリを予約し、最初の32ビット領域へのポインタを作成します。
私は(今のバッファオーバーフローを無視して)安全にバッファへの書き込みにはどうすればよい...私は32ビットのチャンクで記述する必要があるので、どのように私は、各96bitの書き込みの間の「書き込みポインタ」の位置を変更できますか?私はメモリを確保するため
for(int count = 0; count < 100; ++count) // for 100 96bit objects { for(int32 i = 0; i < 3; ++i) { *buffer = *(myInt32 + i); } // ** how do I move the buffer ptr to the start of the next 96bit memory space? ** }
それが安全である、96bitオブジェクトの数を書き、そして確実にするために、第二(リーダー)クラスへの先頭へのポインタを渡す:私のような何かを行うのですか彼らは両方とも同じオブジェクトにアクセスできますか? (読者は一度に96bitオブジェクトの倍数を読みます(〜10,000)ので、読み込みの開始点を知る必要があります)。
リーダーがバッファを読み終えたら、どうすればリセットできますか? '私は再びバッファに書き込むことができるようにポインタ(バッファを空にする)?
バッファ: バッファが実際posix_memalign
によって確保されたメモリの領域の先頭へのポインタです。
int32 *tempbufferPtr;
posix_memalign ((void**)&tempbufferPtr, 8, 10000); // space for 10,000 objects
writePtr = (my96bitObjectclass*)tempbufferPtr;
なぜそれがコミュニティのwikiですか? –
"バッファ"変数の定義を表示してください。 –
@aJ - なぜですか? :)とにかくそれはどういう意味ですか? @Neil - バッファは実際にはposix_memalignによって確保されたメモリ領域の先頭へのポインタです。 int32 * tempbufferPtr; posix_memalign((void **)&tempbufferPtr、8、10000)// 10,000個のオブジェクトのスペース writePtr =(my96bitObjectclass *)tempbufferPtr; – Krakkos