我最近看到了幾個實際做到這一點的開源項目;從函數返回一個不安全的指針,例如:「int * input = this.someIterator.GetUnsafePtr()」。爲什麼允許從函數內返回不安全的指針?
從我的理解,這必須是完全錯誤的。不安全的指針只能通過'固定'語句獲得,當然從函數內部返回的指針不會再被固定(它們將'丟失'它們的聲明範圍),最終導致它們被垃圾收集。
但是後來我不記得編譯器給出了有關這個的任何警告,那麼爲什麼要使用一個固定的語句,如果你實際上可以有'unpinned'的指針遍佈整個?
IntPtr不是跟蹤指針。如果一個IntPtr引用一個託管對象,並且該對象被移動,則該指針不會被更新。 IntPtr和不安全的指針之間沒有真正的區別,除了IntPtr符合CLS並且不是'不安全'。 – 2009-02-22 13:16:28