2016-10-29 2 views
0

私は以下のcuda C++を持っています。 delete関数を使用してh_c、h_c_Rowおよびh_c_ColdIndices配列を削除しようとしています。しかし、nsight eclispeのデバッグモードで各アレイのメモリとそのメモリに格納されている値を見ると、メモリは削除されません。cudaのメインメモリ内の配列を削除するC++

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++のメインメモリ内の配列を削除する正しい方法ですか?

答えて

1

メモリがにリリースされました。は直前の内容が失われたメモリと同じではありません。

deleteオブジェクト(または配列)へのポインタは、オブジェクト(配列の場合は複数形)のデストラクターを呼び出し、メモリマネージャーにメモリを再利用させます。組み込み型の場合、destrcutorは何もしません(メモリの内容は変更されません)が、メモリは再利用されます。

関連する問題