можно подробней и если можно, то еще сылки на инфу
поподробнее - курите ключевое слово языка
fixed и особенности работы Garbage Collector, ссылки найти можно в гугле, теория неплохо описана у Рихтера например.
Реализовывать ручную фиксацию (без блока fixed) не рекомендую, это нехорошо, т.к. по сути это будет unmanaged код на managed языке, т.к. фиксированную память GC сам не освободит, нужно четко все отслеживать и вовремя освобождать, чтобы не было memory leaks и нехватки памяти (из-за сильной фрагментации кучи). Однако если это всеже нужно сделать (к сожалению при взаимодействии с unmanaged кодом такие ситуации изредка бывают).
Если необходимость все-же действительно есть и fixed никак помочь не может, тогда курите класс GCHandle и его методы Alloc() (в сочетании с GCHandleType.Pinned) и AddrOfPinnedObject()... в этом случе это то что вам нужно
Однако прежде чем фиксировать память, настоятельно рекомендую почитать про особенности дефрагментации кучи у Рихтера, и оценить наколько это будет опасно...
Эффективность выделения памяти и сборка мусора сильно ухудшаются, не говоря уж о том что зафиксированный объект нужно обязательно не забыть освободить, т.к. GC такой памятью управлять не может по определению.