2013-05-12 77 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智能指针。