以下のコードに示すように、ホスト メモリを割り当てる方法を方法 1 から方法 2 に変更しました。コードはエラーなしでコンパイルおよび実行できます。方法2を使用してポインターからポインターにメモリを割り当てるのは適切な方法または副作用なのだろうか.
#define TESTSIZE 10
#define DIGITSIZE 5
//Method 1
int **ra;
ra = (int**)malloc(TESTSIZE * sizeof(int));
for(int i = 0; i < TESTSIZE; i++){
ra[i] = (int *)malloc(DIGITSIZE * sizeof(int));
}
//Method 2
int **ra;
cudaMallocHost((void**)&ra, TESTSIZE * sizeof(int));
for(int i = 0; i < TESTSIZE; i++){
cudaMallocHost((void**)&ra[i], DIGITSIZE * sizeof(int));
}