[英]C++ bad-alloc error
我需要找到10000點的數據集的所有對距離。 我在C ++中使用向量存儲點進行編碼。 這是我的載體:
vector <vector <double> > data.
vector <vector <double> > dist.
我正在從文件中讀取輸入數據並存儲在數據中。 然后,我計算所有線對距離並將其存儲在dist中。
它適用於高達8000點的小型數據集。 但是,當我為更大的數據集運行相同的代碼時,出現以下錯誤:
拋出'std :: bad_alloc'實例后調用終止
what():std :: bad_alloc
中止(核心已棄用)。
我已經上網了,但是找不到解決方案。 請幫助我解決此問題。
您正在使用過多的內存,並且似乎引導程序無法分配此內存。
如上所述,如果僅考慮雙打,則每個向量大約有512 MB內存(std :: vector類還具有一些內部變量和vfptable,它們分配了8000次)。
std:vector每次您超過其預分配的限制時都有增加其大小的習慣,以防止在添加的每個新元素上重新分配,而這些元素很昂貴。
因此,向量的真實大小將始終大於其內部元素的數量。
嘗試管理您自己的內存以應對如此大的數字,尤其是如果您從一開始就知道元素的數量。
當您不知道要添加多少個元素時,std:vector非常有用,並且對於6400萬個元素絕對不是:)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.