我在使用cuda中的指針指針時遇到問題。 代碼片段如下。如何在cuda中使用指向指針的指針
char** d_ppcPtr, *d_pcPtr, *h_pcPtr;
cudaMalloc(&d_ppcPtr, sizeof(char*) * 10);
h_pcPtr = (char*)malloc(sizeof(char) * 100);
for(int i = 0; i < 10; i ++)
{
cudaMalloc(&d_pcPtr, sizeof(char) * 100);
cudaMemset(d_pcPtr, 1, sizeof(char) * 100);
cudaMemcpy(&d_ppcPtr[i], &d_pcPtr, sizeof(char*), cudaMemcpyHostToDevice);
cudaMemcpy(h_pcPtr, d_ppcPtr[i], sizeof(char) * 100, cudaMemcpyDeviceToHost); //crash here
cudaFree(d_ppcPtr[i]); //crash also here
}
cudaFree(d_ppcPtr);
我該如何修復以上兩次崩潰? 在此先感謝。
什麼樣的崩潰?段錯誤?錯誤訊息? – skrrgwasme 2014-09-30 02:49:03
在d_ppcPtr [i]地址讀取訪問衝突。 – 2014-09-30 02:53:40
您是否分配了'd_ppcPtr [i]'應該指向的內存空間? – JackOLantern 2014-09-30 06:46:29