MSDN has a very similar example. The fixed statement basically blocks garbage collection. In .Net if you use a pointer to a memory location the runtime can reallocate the object to a "better" location at any time. SO if you want to access memory directly you need to fix it in place.