簡體   English   中英

C ++錯誤分配錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM