為什麼在迴圈中呼叫ImaqImageToArray()函數時,記憶體的使用量會一直增加?



主要軟體:
主要軟體版本:
主要軟體修正版本:
次要軟體:

問題: 在我的應用程式中會在迴圈的架構下去呼叫imaqImageToArray()這個函數。但是我發現每次一呼叫這個函數,記憶體的使用量就會增加,其增加量和擷取的影像大小一樣。

解答:

每次呼叫imaqImageToArray()這個函數時,就會在系統記憶體放置一份陣列資料(從影像產生而來)的記憶體複製。換言之,當函數呼叫成功時會回傳一個指標,用來指向這一份記憶體複製的位址。這份記憶體複製和擷取的影像兩者大小是一樣的,因此,若沒有將其作記憶體釋放的動作,那麼很快地將會導致系統記憶體的資源全部被消耗掉。若要針對imaqImageToArray()所回傳的指標作記憶體釋放的動作,可以在同一個迴圈中呼叫imaqDispose()這個函數。下面的步驟為釋放記憶體的流程:

iPointer = imaqImageToArray ( imgInputImage , IMAQ_NO_RECT , &iCols , &iRows ); 
imaqDispose ( iPointer );



相關連結:

附加檔案:





報告日期: 08/28/2003
最後更新: 02/11/2008
文件偏號: 30RBFT45