在host方法里面
int *a;
cudaMalloc((void**)&a, sizeof(int) * 10);
这里的a还是在host内存的,只是a所存放的地址为gpu上的地址(或者说a是gpu地址值的容器,该容器在host内存中)
因此可以进行地址值的赋值
int *pptr[2];
pptr[0] = a;
只是将a的gpu内存地址值赋值给host的pptr的二维指针而已
但是如果是:
int **pptr;
cudaMalloc((void**)&pptr, sizeof(int*) * 2);
pptr[0] = a;
是不对的,因为pptr是host内存,但是host存放的gpu的内存地址,那么pptr[0]其实是访问的是gpu内存地址,这样在host中显然是错误