Without unsafe, zero init is not needed.
This is opposite to the way unsafe (either syntax or known unsafe APIs) is used today.
All use of p/invoke is also unsafe though, even if the keyword isn’t used. And it’s much more common to wrap a C library than to write a buffer pool.
Without unsafe, zero init is not needed.