What(): std::bad_alloc - 我内存不足了吗?

2023-11-22

我的数据集: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;
}

Output:

...
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 意味着分配内存时出现问题 - 所以是的,你很可能内存不足。不幸的是,没有可靠的方法来“处理”这种异常 - 您可以捕获它并感激地退出应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

What(): std::bad_alloc - 我内存不足了吗? 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern

随机推荐

  • ASP.NET Web API POST 参数为空

    为了澄清 我已经阅读了其他问题及其答案并尝试了所有解决方案 但没有一个解决了问题 我正在本地调试将部署到 Windows Azure 云服务的代码 这是一个 ASP NET Web API 应用程序 几天前还可以运行 但现在已经不行了 我有
  • 日期列作为主键一部分的优点和缺点

    我目前正在开发一个数据库 其中需要日志来跟踪一堆不同的数据更改 诸如价格变化 项目状态变化等 为了实现这一点 我制作了不同的 日志 表来存储需要保留的数据 举一个坚实的例子 为了跟踪需要订购的零件的价格变化 我创建了一个名为的表Part P
  • _C99的Bool数据类型

    C 编程语言的 C99 标准定义了 Bool数据类型作为另一种数据类型的宏 因为该语言无法处理类型安全布尔值 Is the Bool一个宏unsigned char unsigned int或者其他一些数据类型 Bool是根据 C 标准的单
  • Flutter iOS 构建在运行 pod install 时失败

    我正在尝试制作一个flutter插件 所以我按照提供的步骤创建了一个插件https flutter dev docs development packages and plugins developing packages 当我尝试运行 i
  • 根据环境配置基本URL

    假设我们有 Angular 4 应用程序 需要位于不同环境中的不同相对根 URL 中 即 http localhost 4200 index html为了发展 http prod server com angular app index h
  • HTML/CSS 内容始终居中

    如何使页面内容居中 使其在每种类型的屏幕尺寸上居中 例如 关于寓言式的如果我调整浏览器的大小 中心内容将向左移动 直到到达浏览器窗口 有一些背景元素可以水平无限延伸 顶部的深灰色 中间的浅灰色等 我可以在我的笔记本电脑和 iMac 上打开这
  • Android:软键盘不显示

    我在 MainActivity 布局中有 2 个 EditText 如果我正常运行应用程序 第一个 EditText 会获得焦点 但软键盘不会打开 但是当我使用这个时 public class TestingActivity extends
  • 关于gzip文件上seek的使用

    我有一个大gzip文件 我想使用仅读取其中的一部分seek 关于使用seek on gzip文件 这个page says seek 位置是相对于未压缩数据的 因此 调用者甚至不需要知道数据文件是否被压缩 这是否意味着seek必须从文件开头读
  • javascript 如何在不使用警报的情况下创建验证错误消息

    我希望制作一个简单的表单验证错误消息 显示在用户名字段下 我似乎无法弄清楚
  • 从 ReadableStream 对象检索数据?

    我怎样才能从a处获取信息ReadableStream object 我正在使用 Fetch API 但文档中没有明确说明这一点 尸体正在被归还ReadableStream我只想访问此流中的属性 在浏览器开发工具的 Response 下 我似
  • OSMDroid:当用户点击地图时添加标记

    我想在用户点击地图时在地图上显示一个标记 此外 这不应该影响双击进行缩放和 或移动Mapview 我正在使用 osmdroid android 4 0 jar 看看OSMBonusPack MapEventsOverlay MapEvent
  • 命名空间“clr-namespace:CefSharp.Wpf; assembly=CefSharp.Wpf”中不存在名称 ChromiumWebBrowser

    我已经遵循了这个link实现 CefSharp 应用程序 但我在编码时卡住了MainWindow xaml Blend for VS 2015 说 命名空间 clr namespace CefSharp Wpf assembly CefSh
  • 扩展 Object.prototype JavaScript

    我不是在问这是否可以 Object prototype method function 这被视为evil几乎每个人都考虑到它搞砸了for var i in obj 真正的问题 Ignoring 不合格的浏览器 不支持的浏览器Object d
  • 如何在装饰器中使用命名参数?

    如果我有以下功能 def intercept func do something here intercept arg1 20 def whatever arg1 arg2 do something here 我希望拦截仅在以下情况下启动a
  • 如何设置从浏览器下载的文件的名称?

    我正在编写一个 Web 应用程序 除其他外 它允许用户将文件上传到我的服务器 为了防止名称冲突并组织文件 我将它们放在服务器上后对其进行重命名 通过跟踪原始文件名 我可以与文件所有者进行通信 而他们却不知道我在后端更改了文件名 也就是说 直
  • 如何使用 jQuery 更改 CKEditor 文本?

    我有一个带有 CKEditor bbCode 插件 的文本区域
  • JBoss AS 7 的部署内容在哪里

    我是 JBoss AS 7 的新手 我尝试在 JBoss AS 7 上部署我的 war 文件 看起来工作正常 我的问题是在哪里可以看到部署的内容 我希望它像 Tomcat 一样 它应该有一个探索的 war 文件夹 用于保存部署的内容 JBo
  • 用于返回计算机上 .NET Framework 版本的 PowerShell 脚本?

    返回计算机上 NET Framework 版本的 PowerShell 脚本是什么 我的第一个猜测是涉及 WMI 的东西 还有更好的吗 它应该是一行 为每次 NET 安装 在每一行 仅返回最新版本 如果您要使用注册表 则必须递归才能获取 4
  • 带有绑定参数的 MarkupExtension

    我正在定制MarkupExtension其中我需要来自 XAML 的非字符串参数来构造新对象 是否可以在字段上使用非字符串参数绑定DataContext scope 换句话说 我怎样才能做这样的事情呢
  • What(): std::bad_alloc - 我内存不足了吗?

    我的数据集 960 个维度的 500 000 个点 文件大小为 1 9 GB 1 922 000 000 字节 该代码适用于较小的数据集 但为此它每次都会在同一点崩溃 这是一个最小的例子 include