c++ - 在cuda c++中删除主内存中的数组

标签 c++ arrays memory cuda

<分区>

我有以下 cuda c++。我正在尝试使用删除功能删除 h_c、h_c_Row 和 h_c_ColdIndices 数组。但是当我在 nsight eclispe 的 Debug模式下看到每个数组的内存和存储在该内存中的值时,内存并没有被删除。

    float *h_c = new float[nnz_c];
    int *h_c_Row = new int[n_k+1];
    int *h_c_ColIndices = new int[nnz_c];
    create_sparse_MY(c,n_k,d,h_c,h_c_Row,h_c_ColIndices, nnz_c);

    // transfer sparse c to device memory
    float *d_sc;  (cudaMalloc(&d_sc, nnz_c * sizeof(float)));
    (cudaMemcpy(d_sc, h_c, (nnz_c) * sizeof(float), cudaMemcpyHostToDevice));
    int *d_c_ColIndices; (cudaMalloc(&d_c_ColIndices, nnz_c * sizeof(*d_c_ColIndices)));
    (cudaMemcpy(d_c_ColIndices, h_c_ColIndices, (nnz_c) * sizeof(int), cudaMemcpyHostToDevice));
    int *d_c_RowIndices;  (cudaMalloc(&d_c_RowIndices, (n_k+1) * sizeof(*d_c_RowIndices)));
    (cudaMemcpy(d_c_RowIndices, h_c_Row, (n_k+1) * sizeof(int), cudaMemcpyHostToDevice));
     delete[] h_c;
     delete[] h_c_Row;
     delete[] h_c_ColIndices

有人可以帮我吗?这是在 cuda c++ 中删除主内存中数组的正确方法吗?

最佳答案

正在释放的内存与立即丢失其先前内容的内存不同。

delete指向对象(或数组)的指针调用对象(数组的复数)析构函数,并使内存管理器回收内存。在内置类型的情况下,析构函数什么也不做(内存内容不改变),但内存被回收。

关于c++ - 在cuda c++中删除主内存中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324217/

相关文章:

c++ - 奇怪的 C++ 语法?

C++ 空容器迭代器行为

Java:数组逆序排序方法

javascript - 如何在vueJs中使用forEach?

C++。如何从一开始就获得进程分配的最大内存量?

c++ - 将大括号作为函数参数传递意味着什么?

c++ - CvSVM 未在此范围内声明错误

python - 集成返回数组的函数的 pythonic 方法是什么(使用 scipy quad)?

c++ - 使用 {0} 初始化类

php内存限制垃圾收集器