我在第二个cudaMalloc之后获得了一个分段错误.
#include <cuda.h>
#include <cuda_runtime.h>
int main(){
  int n=16;
  float2* a;
  cudaMalloc((void **) a, n*sizeof(float2));
  float2* b;
  cudaMalloc((void **) b, n*sizeof(float2));
  return 0;
}
但是,如果我注释掉2个cudaMalloc中的任何一个,那么代码运行正常.
谢谢!
你必须像这样传递指针指针:
float2* a;
cudaMalloc(&a, n*sizeof(float2));
float2* b;
cudaMalloc(&b, n*sizeof(float2));
否则,你只是将一个悬空指针强制转换为"指向指针的指针",并且该库取消引用导致段错误的垃圾地址.