2013-05-12 76 views
4

如果沒有,拋出異常時釋放cudaMalloc ed內存的標準方式是什麼? (請注意,我無法使用Thrust。)有沒有CUDA智能指針?

+0

什麼會拋出異常? – talonmies 2013-05-12 16:29:01

+0

任何函數或類成員 - 即很多事情 – mchen 2013-05-12 16:43:46

+0

我的意思是,宿主代碼是否會針對CUDA運行時錯誤拋出異常,或者這些其他錯誤條件是否與CUDA無關? – talonmies 2013-05-12 16:52:11

回答

5

您可以使用RAII成語,並分別將cudaMalloc()cudaFree()調用到對象的構造函數和析構函數中。

一旦拋出異常,你的析構函數將被調用,這將釋放分配的內存。如果你把這個對象包裝成一個智能指針(或者使它像一個指針一樣),你將得到你的CUDA智能指針。