- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据集:960 个维度中的 500,000 个点。文件大小为 1.9 GB(1,922,000,000 字节)。
该代码适用于较小的数据集,但为此它每次都会在同一点崩溃。这是一个最小的例子:
#include <iostream>
#include <vector>
template<typename T>
class Division_Euclidean_space {
public:
/**
* The data type.
*/
typedef T FT;
/**
* Constructor, which
* sets 'N' and 'D' to zero.
*/
Division_Euclidean_space()
: N(0),
D(0) {
}
/**
* @param n - size of data
*/
void setSize(size_t& n) {
N = n;
}
/**
* @param n - size of data
*/
void setSize(int n) {
N = n;
}
/**
* Get the number of points
*
* @return - the number of points
*/
const size_t& size() const {
return N;
}
/**
* Get the dimension of points
*
* @return - the dimension
*/
const int dim() {
return D;
}
/**
* @param d - dimension of data
*/
void setDim(int& d) {
D = d;
}
/**
* \brief Inserts a new value to the collection of
* points, held in the private vector.
*
* @param v - value to be inserted
*/
void insert(FT v) {
p.push_back(v);
}
private:
/**
* number of points
*/
size_t N;
/**
* dimension of points
*/
int D;
/**
* vector of points
* Note that indexing is of the form: [i * D + j]
*/
std::vector<FT> p;
};
typedef Division_Euclidean_space<int> Division_space;
typedef Division_space::FT FT;
template<typename T>
void readDivisionSpacefvecs(Division_Euclidean_space<T>& ds, int& N, int& D,
char* filename) {
FILE* fid;
fid = fopen(filename, "rb");
if (!fid)
printf("I/O error : Unable to open the file %s\n", filename);
// we assign the return value of fread() to 'sz' just to suppress a warning
size_t sz = fread(&D, sizeof(D), 1, fid);
fseek(fid, 0L, SEEK_END);
sz = ftell(fid);
N = sz / (1 * 4 + D * 4);
//printf("N = %d, D = %d, |%s|\n", N, D, filename);
fseek(fid, 0L, SEEK_SET);
ds.setSize(N);
ds.setDim(D);
std::cout << ds.dim() << " " << ds.size() << "\n";
int c = 0;
float v;
int i, j;
for (i = 0; i < N; ++i) {
sz = fread(&D, sizeof(D), 1, fid);
//printf("%d\n", D);
for (j = 0; j < D; ++j) {
sz = fread(&v, sizeof(v), 1, fid);
if (c >= 279619)
printf("j = %d, v = %f, read up to point %d\n", j, v, c);
ds.insert(v);
}
++c;
printf("read up to %d\n", c);
}
if (c != N)
printf("WARNING! Read less points than expected.\n");
}
int main() {
Division_space test;
int N, D;
readDivisionSpacefvecs<FT>(test, N, D, "../../parallel/rkd_forest/Datasets/gist/gist_learn.fvecs");
return 0;
}
输出:
...
j = 255, v = 0.052300, read up to point 279620
j = 256, v = 0.052300, read up to point 279620
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
我是不是记错了?我怎么知道?
这是我有多少内存:
samaras@samaras-A15:~$ free -mt
total used free shared buffers cached
Mem: 3934 2638 1295 0 179 1000
-/+ buffers/cache: 1458 2475
Swap: 3987 0 3987
Total: 7922 2638 5283
最佳答案
std::bad_alloc 表示分配内存时出现问题 - 所以是的,您很可能内存不足。不幸的是,没有一种可靠的方法来“处理”这种异常——您可以捕获它并欣然退出应用程序。
关于c++ - what(): std::bad_alloc - 我的内存力不足了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309681/
这个错误的原因是什么?其实我不想受到之前测试用例结果的影响所以在测试用例开始时,我清空了队列以便每个测试用例都可以重新开始。 " #include #include using name
我的程序中出现了 bad_alloc 异常。 这些是限制条件: 1 #include #include #include class SuffixArray { std::vector
我在 digital ocean 上使用 node.js 并尝试运行文件上传/下载服务器。 为了确保服务器在后台运行并且不会因错误而退出,我使用了以下内容 nohup nodejs server.js
[前注:我已经阅读了 StackOverflow 中的现有线程。我的问题似乎没有] 我正在研究 Quake 2 MD2 格式。在新建一个指针数组后,我似乎得到了错误的分配。但是,如果我做一些可怕的指针
使用QAudioOut我试图按顺序播放存储在QByteArray中的数据...这在追加少量数据时起作用,但是当数据过多时,可以说是2到3个小时的RAW PCM从不同组合追加由于堆的大小不足以同时保存所
我是C++的新手,我真的很想使用Botan连接到硬件加密 token 。我不知道是否错过了libs或dlls的任何设置。 我基于Building Botan library in Windows 10
我正在用 C++ 编写一些使用 BFS 搜索迷宫的代码(我的主要语言是 Python,但我想稍微锻炼一下我的 C++ 大脑...),我偶然发现了这个奇怪的错误。 这里是相关的数据结构: struct
我必须为我的单元测试导致 bad_alloc(基本上,为了 100% 的代码覆盖率,我无法更改某些函数)。我该怎么办? 这是我的代码示例。我必须在这里的某个地方引起 bad_alloc。 bool i
在 c++ 中,分配内存时会发生 bad_alloc,或者至少我是这么理解的,但现在我在从数组读取内存时遇到此错误。我创建数组: int * possible = new int[ suma ]; 然
我遇到编译器错误: 错误 C2061:语法错误:标识符“bad_alloc” 我以前在其他项目中使用过下面的代码块,在 try block 中使用不同的内存分配,没有问题。我希望有人能向我解释为什么
我使用了这个伪代码: h := 1 /* Initialization of the pivot row */ k := 1 /* Initialization of the pivot colu
我四处寻找这个问题的解决方案,但找不到,所以我只好问问。我的程序是一个迷宫游戏,其中包含许多不同的房间,每个房间都使用指针链接到一个或多个相邻的房间。玩家从一个房间导航到另一个房间,直到找到导出。 当
我正在尝试递归地 segmentation 球体以在面上实现球面小波算法。虽然我有 8 GB 的可用内存,但我只能将二十面体 segmentation 为 9 个级别。我的问题是在构建我的球体时内存不
我从事一个游戏项目。最近,我们遇到了一个问题,当我们加载/卸载不同的场景大约 3 次时,我们捕获了“bad_alloc”异常。 每次加载场景时,我们首先将压缩的 .zip 文件夹加载到内存中,然后从中
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
当构造函数中抛出bad_alloc异常时,其中创建了多个对象,必须做些什么来清理内存。例如。 class Object { private: A * a; B * b;
我的程序抛出一个 std::bad_alloc。调试后发现是代码中抛出的 curFinalBucket->points.push_back(p); 其中点是一个 vector .在代码行之前,curF
我目前正在做一个 C++ 项目,现在我已经卡住了一段时间了。这是关于使用表达式模板和(至少对我来说)一个奇怪的 bad_alloc 的延迟评估。 如果您尝试下面的代码,您会注意到由于最后一次添加 b+
所以我有一个结构 struct float3 { float x, y, z; }; 我正在尝试创建一个函数来获取 x、y、z 值并将它们映射到键 0、1、2 以对应其各自的维度。我写了下面的
考虑这个简单的程序: #include #include int main(void) { const std::size_t size = 1 size_t_max / sizeof(i
我是一名优秀的程序员,十分优秀!