我在使用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