1. 程式人生 > >vb.net呼叫vc動態庫時傳遞陣列引數應注意的問題

vb.net呼叫vc動態庫時傳遞陣列引數應注意的問題

vb.net呼叫vc寫的dll的時候,需要從vb.net傳遞陣列到dll函式,在vc dll中首先malloc了空間,然後將陣列引數指標指向了分配的地址,然後完成了演算法,最後free,結果編譯連結都無問題,但在執行的時候報錯了。

通過除錯dll程式,發現在free的時候報的錯誤,後來將malloc使用的指標先等於NULL,然後再free,程式執行ok了。

通過這個案例,可以發現當對傳遞的陣列進行了地址操作,而又強行地釋放這段空間,就會產生記憶體操作的錯誤,所以必須先使地址關係斷開,然後再釋放所申請的記憶體,才能安全地執行程式。