ffi にメモリを割り当てるときに、コードをもう少し堅牢にしようとしています。
私は次の関数を書きました:
void withMemory<T extends NativeType>(
int size, void Function(Pointer<T> memory) action) {
final memory = calloc<Int8>(size);
try {
action(memory.cast());
} finally {
calloc.free(memory);
}
}
上記の関数を呼び出すには、次を使用します。
withMemory<Uint32>(sizeOf<Uint32>(), (phToken) {
// use the memory allocated to phToken
});
これは機能しますが、ご覧のとおり、Uint32 とsizeOf
.
私が本当に書きたいのは:
withMemory<Uint32>((phToken) {
// use the memory allocated to phToken
});
問題は、ジェネリック型をどちらにも渡すことができないかcalloc
、sizeOf
エラーなしで渡すことができないことです。
[...] への型引数はコンパイル時の定数でなければなりませんが、型パラメーターは定数ではありません。型引数を定数型に変更してみてください。
この問題を回避する方法はありますか?