我對C++很新手。我想創建執行壓縮行存儲矩陣操作的命名空間,但是遇到了一個錯誤: terminate called after throwing an instance of 'std::bad_alloc'
下面是我的代碼在頭文件:一個類的C++分配
namespace matrixOperation
{
class SparseMatrix
{
public:
SparseMatrix(){
}
size_t nrow, ncol, nnz;
vector<size_t> ia, ja;
vector<double> a;
~SparseMatrix(){
}
}; // end of SparseMatrix class*/
typedef SparseMatrix CSR;
typedef SparseMatrix csr_p;
inline void alloc_csr(size_t nrow, size_t ncol, size_t nnz, CSR *pt)
{
pt = new CSR(); // this is where I think the bug occurs
pt->nrow = nrow;
pt->ncol = ncol;
pt->nnz = nnz;
pt->ia.resize(nrow+1);
pt->ja.resize(nnz);
pt->a.resize(nnz);
return;
}
} //end of namespace
感謝您的幫助!
我們需要一個[mcve] – NathanOliver
不直接相關,但是'alloc_csr'函數更適合作爲SparseMatrix類的構造函數。在'void'函數結束時,你不必寫'return;';這是隱含的。 – Wyzard
回聲納森的評論:請也顯示對'alloc_csr'的調用(包括用作參數的值)。由於你是C++新手,你可能想看看我們的[C++書籍清單](http://stackoverflow.com/q/388242/1782465)。 – Angew