我知道在内核中可以使用malloc
来分配GPU全局内存。那么能否使用realloc
呢?
您可以为自己的数据类型编写realloc设备函数。
只需为新数组分配新空间,将旧值复制到新数组中,释放旧数组空间,返回具有更多空间的新数组即可。
代码片段大致如下:
__device__ MY_TYPE* myrealloc(int oldsize, int newsize, MY_TYPE* old)
{
MY_TYPE* newT = (MY_TYPE*) malloc (newsize*sizeof(MY_TYPE));
int i;
for(i=0; i<oldsize; i++)
{
newT[i] = old[i];
}
free(old);
return newT;
}
但是如果你真的需要它,请务必调用它。同时添加适当的错误检查。
malloc
和free
函数,但没有提到realloc
。我认为这个函数不存在。
new
和delete
也可以使用。 - Manolete