私はGPUプログラミングのためのカスタムmallocを書く必要があります。これは正しく動作しますか?このカスタムmallocはOKですか?
void* malloc(int size, int* bytesUsed, uchar* memory){
int startIdx = (*bytesUsed);
(*bytesUsed) += size;
return (void*)(memory+startIdx);
}
私はCプログラミングに新たなんだ、私はポインタ算術演算関連のエラーか何かを作ったかもしれない...アイデアはbytesUsed
であるあなたがでそれをインクリメントして、最初のフリーアドレスのmemory
にあなたにインデックスを与えますsize
を呼び出し、インクリメントしたインデックスをポインタとして返します。
POSIXをお使いの場合http://linux.die.net/man/2/sbrk – stackptr
'free'が必要な場合はどうなりますか? –
@OliverCharlesworth私は自由にする必要はありません。ワークグループが終了すると、すべてのメモリが確保され、次のワークグループに再利用されます。 (私はopenCLを使用しています)。 –