标签: bad-alloc

Bad Alloc具有200GB可用内存c ++

我是C++的新手,我正在研究'压缩感应',所以我需要处理大型矩阵,而MATLAB实际上很慢,所以我用C++编写算法.

问题是我存储大数组(大约100Mb-1Gb).它们大约是20个阵列.它可以正常使用30 Gb的内存,但是当进程需要超过40Gb时,它就会停止.我认为这是一个内存问题,我在Linux和Windows上测试它(OS 64位 - 编译器64位MinGW - 200Gb Ram - intel Xeon)有任何限制吗?

size_t tm=n*m*l;
double *x=new double[tm];
Run Code Online (Sandbox Code Playgroud)

我使用大约20个像这样的阵列.n,m~ = 1000且L~ = 30这些通常是尺寸.

谢谢

c++ bad-alloc dynamic-arrays mingw-w64

7
推荐指数
1
解决办法
281
查看次数

std :: vector默认构造函数是否可以抛出异常

如果我std::vector使用默认构造函数(和默认分配器)构造一个空,它可以抛出异常吗?

通常,为容器的元素分配空间可以抛出异常(这将是一个异常std::bad_alloc).但一个默认的构造函数std::vector并不需要分配任何这样的空间.它可以在第一次插入或赋值时懒惰地分配一些空间.但是C++标准是否要求它不会抛出异常(暗示延迟分配,或者捕获std::bad_alloc然后再回到延迟分配)?

c++ stdvector bad-alloc noexcept

7
推荐指数
1
解决办法
577
查看次数

使用new分配大块内存

我需要用new分配大块内存.

我坚持使用new,因为我正在为两部分应用程序的生产者端编写一个模拟器.实际的生产者代码正在分配这些大块,我的代码有责任删除它们(在处理它们之后).

有没有办法可以确保我的应用程序能够从堆中分配如此大量的内存?我可以将堆设置为更大的尺寸吗?

我的情况是64块288000字节.有时我得到12分配,有时我得到27分配.我得到一个std :: bad_alloc异常.

这是:C++,Linux上的GCC(32位).

c++ memory new-operator bad-alloc

6
推荐指数
1
解决办法
6116
查看次数

node.js创建bad_alloc

我试图开始使用node.js主要用于学习目的,但我肯定会看到我将在未来的项目中使用的一些潜力.

我的问题 - 我在Centos服务器上使用SSH并完成了本教程:https://www.digitalocean.com/community/articles/how-to-install-and-run-a-node-js-app -酮的CentOS-6-4-64bit

在"创建快速应用程序"部分之前,一切都很顺利.当我在命令行上键入"express hello"时,出现此错误:

terminate called after throwing an instance of 'St9bad_alloc'
   what():  std::bad_alloc
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

然后目录中会有一个文件(例如:core.1233),似乎有行话 - 但以前肯定不存在.

我也去了http://nodejs.org网站,试图用那里的代码创建简单的Web服务器.我创建了example.js文件,当我输入"node example.js"时,我也得到:

terminate called after throwing an instance of 'St9bad_alloc'
   what():  std::bad_alloc
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

......和以前一样

我是一名程序员(通常是PHP,MySQL等),在服务器或命令行上没有多少工作 - 但我可以"充分利用".问题是 - 除了快速谷歌搜索告诉我的内容之外,我不知道这意味着什么 - 与记忆有关?任何帮助都非常感谢!

(另外,当我键入"node --version"时,我确实得到版本v0.10.8,所以我非常确定节点是否正确安装.如果我创建example.js文件只能说"console.log('test') ;",它仍然终止并给出相同的错误.它永远不会输出."

谢谢!

bad-alloc node.js

6
推荐指数
1
解决办法
1316
查看次数

在这个琐碎的例子中安全地召唤新的最佳方式?

对于一个学校项目,我有3个班:一个鸡蛋,一个巢和一个母鸡.我们需要使用new创建每个in的实例,对每个实例进行main调用display(),然后显式删除每个实例.这一切都很简单.

我的问题是不知道如何正确地抓住一个bad_alloc; 应该抛出任何一个new电话.

现在,它看起来像这样:

int main(int argc, char* argv[]) {
    using namespace std;

    cout << "Creating new instances on the heap..." << endl;
    Egg* egg = new Egg("New Egg");
    Nest* nest = new Nest("New Nest");
    Hen* hen = new Hen("New Hen");

    cout << sizeof(*egg) << endl;
    cout << sizeof(*nest) << endl;
    cout << sizeof(*hen) << endl;


    cout << "\nCalling display() on each..." << endl;
    egg->display();
    nest->display();
    hen->display();

    cout << "\nExplicitly …
Run Code Online (Sandbox Code Playgroud)

c++ bad-alloc

6
推荐指数
1
解决办法
95
查看次数

std :: map分配错误

我面临着std :: map的问题。出于未知原因,有时插入映射会导致“分配错误”异常。

以下是我用于插入地图的函数。

BOOL Add2WaitList(Object<LPVOID> *newObj)
{
    try
    {
        _set_se_translator( trans_func );
        m_syncWQ.Lock();
        if (m_waitingQueue.count(newObj->uid)>0)
        {
            m_syncWQ.Unlock();
            return FALSE;
        }
        m_waitingQueue[newObj->uid] = *newObj; <-- failing here
        m_syncWQ.Unlock();
        return TRUE;
    }
    catch(std::exception &ex){
        ...
    }
    catch(SE_Exception &e){
        ...
    }
    catch(...){
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何解决吗?

注意:我无法确定重现它的步骤。

提前THX!

添加有关对象和地图的详细信息:

template <typename T>
struct Object{
public:
    void Kill()
    {
        if (response!=NULL)
            delete response;
        if (object!=NULL)
            delete object;
    }

    enum objType;
    std::string uid;
    enum status;
    double p;
    enum execType;
    T object;
    LPVOID response;
}; …
Run Code Online (Sandbox Code Playgroud)

c++ stdmap bad-alloc

5
推荐指数
1
解决办法
3721
查看次数

调整大小时,`std::vector` 会抛出“错误分配”异常

我在 C++ dll 中有以下代码,通过 JNI 调用它:

std::vector<double> myVector;
myVector.resize(10000000, 0);
Run Code Online (Sandbox Code Playgroud)

我收到“错误分配”异常,即使向量的最大大小据称大于 10000000。

我应该使用什么工具来跟踪内存分配,以便找到任何内存泄漏?

如果确实没有内存泄漏,我如何减少向量的占用空间以确保我有足够的空间?

c++ java-native-interface stdvector bad-alloc

5
推荐指数
1
解决办法
8044
查看次数

尽管没有定义<new>标头,但新抛出bad_alloc?

如果没有(因为标题中定义了这个错误),new程序中的表达式如何抛出错误怎么回事?bad_alloc#include <new><new>

从3.7.4开始.N3337:

该库提供全局分配和释放功能的默认定义.一些全局分配和释放功能是可替换的(18.6.1).C++程序最多只能提供一个可替换分配或释放功能的定义.任何此类函数定义都将替换库中提供的默认版本(17.6.4.6).以下分配和释放函数(18.6)在程序的每个转换单元中在全局范围中隐式声明.

void* operator new(std::size_t);

void* operator new[](std::size_t);

void operator delete(void*);

void operator delete[](void*);
Run Code Online (Sandbox Code Playgroud)

这些隐含的声明只介绍了函数名operator new,operator new[],operator delete,和operator delete[].[ 注:隐式声明不引入名称std,std::size_t或该库使用来声明这些名称的任何其他名称.因此,在不包括头部的情况下引用这些函数之一的新表达式,删除表达式或函数调用<new>是格式良好的.但是,除非通过包含适当的标题声明了名称,否则引用stdstd::size_t形成不良.-end note ]也可以为任何类声明和定义分配和/或释放函数

这仍然不清楚.隐式声明使用std::size_t但不引入它们(同样必须是这样bad_alloc)?并且std::size_tnew表达式可以使用之前不需要引入?可以理解这是怎么回事,或者我必须从表面上看它?

c++ bad-alloc c++11

5
推荐指数
1
解决办法
430
查看次数

如何在android java中处理bad_alloc

我正在使用 aViewPager来显示片段。当我多次滑动它时,它会出现以下错误:

E/libc++abi: terminating with uncaught exception of type std::bad_alloc: std::bad_alloc
--------- beginning of crash
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 6900
Run Code Online (Sandbox Code Playgroud)

我正在显示和缓存图像(使用这个)以及我正在使用TextView用来在Fragment.
我试图从其他链接获得帮助,但未能成功。

java android bad-alloc sigabrt android-fragments

5
推荐指数
1
解决办法
2411
查看次数

当元素数&gt; 1000时,如何使向量的笛卡尔积?

我有1,2,...,n个向量。每个向量都有超过10000个元素,我必须获得这些向量的笛卡尔积。我有一个代码,起作用了,但是仅在1000个元素和4个向量以下。我想将笛卡尔乘积写到文件中,但是如果输出文件大于1GB,则会得到:“在抛出'std :: bad_alloc'what()实例what():std :: bad_alloc实例后调用终止”。

我的主要问题是,如何解决此内存分配错误?

这是我的代码的可运行部分:

#include <iostream>
#include <vector>
#include <algorithm>
#include <time.h>
#include <fstream>
#include <math.h>

using namespace std;

vector<double> makeVectorByRange(double min, double max, double step){
    vector<double> out = {};
    for( ; min <= max; min+=step){
        out.push_back(min);
    }
    return out;
} 


void cart_product_solve_and_write_to_file (const vector<vector<double>>& inpV) {
    vector<vector<double>> out = {{}};

    std::ofstream outputFile;
    std::fixed;

    for (auto& u : inpV) {
        vector<vector<double>> r;
        r.clear();
        for (auto& x : out) {

            //make/open file, append
            outputFile.open ("out.csv", std::ofstream::out | std::ofstream::app); …
Run Code Online (Sandbox Code Playgroud)

c++ cartesian-product bad-alloc c++11

5
推荐指数
1
解决办法
274
查看次数