标签: bad-alloc

如何在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
查看次数

不使用new的C++内存分配错误

我遇到问题,我的程序抛出了大量的内存分配异常,我很难诊断问题...我会发布代码,但我的程序非常大,我有专有的信息问题,所以我是希望在不发布代码的情况下获得一些帮助.如果您打算使用某种形式的SSCCE评论做出回应,请立即停止阅读并保存我们两个人的时间.这是一个我不能发布简洁代码的情况 - 我会尽量使用我的问题描述和一些具体问题尽可能简洁明了.

程序背景 - 我的程序基本上是一个数据处理程序.它需要一堆数据表作为输入,对它们执行计算,并根据计算结果吐出新的数据表.我的所有数据结构都是用户定义的类(由int,double和string类型组成,带有用于数组的向量容器).在所有情况下,我都会在不使用new和delete的情况下启动类变量的实例.

问题描述 - 我的程序在没有警告的情况下编译,并且在较小的数据集上运行良好.但是,一旦我增加了数据集(从20x80数组到400x80),我就开始抛出bad_alloc异常(一旦我处理了前35个条目左右).大型数据集在我的18个模块中的17个中运行良好 - 我已经隔离了一个发生错误的函数.此函数所需的计算将导致创建大约30,000行数据,而我的代码中的其他函数生成800,000多行而不会发生意外.
这个模块中唯一真正的唯一属性是我使用了大量调整(每个函数调用大约100次),并且该函数在调整大小操作期间使用递归循环(该函数在建筑物一个租户之外分配平方英尺)一段时间,然后在模拟每个租户租约大小和持续时间之后更新要分配的剩余脚,直到分配了所有平方英尺).此外,错误每次都发生在几乎相同的地方(但不是完全相同的位置,因为我有一个随机数生成器,它会对结果产生一些变化).让我感到困惑的是,对这个函数的第一次~34次调用工作正常,~35调用不需要比之前的34更多的内存,但是我在第35次调用时遇到了这些bad_alloc异常...

我知道没有代码就很难提供帮助.请尽量给我一些指导.我的具体问题如下:

  1. 如果我没有使用"new"和"delete",并且我的所有变量都在本地函数的INSIDE中初始化,是否可能通过重复的函数调用产生内存泄漏/分配问题?当使用"向量实例"初始化包含局部函数的变量时,我可以或应该做些什么来管理内存 声明我的变量?

  2. 如果我通过堆栈执行整个程序,是否有可能在堆栈内存上运行不足?是否有可能我需要在堆上加载一些大的查找表(映射等),然后在速度很重要的迭代中使用堆栈?

  3. 使用与内存相关的调整大小是否有问题?这可能是我应该使用"新"和"删除"的实例(在许多情况下我被警告不要使用那些,除非有非常强烈的,具体的理由这样做)?

  4. [与3相关]在问题函数中,我正在创建一个类变量,然后将该变量写入约20次(对于我的模型的每次"迭代"一次).当我这样做时,我不需要上一次迭代的数据...所以我可以表面上为每次迭代创建一个新的变量实例,但我不明白这将如何有所帮助(因为我能够清楚地看到)在第一个~34个数据切片上对一个实例进行所有20次迭代)

任何想法将不胜感激.我可以尝试发布一些代码,但我已经尝试了一次,每个人似乎都因为它不可编辑而分心.我可以发布有问题的函数,但它不能自行编译.

以下是导致问题的类:

// Class definition
class SpaceBlockRentRoll
{
public:
    double RBA;
    string Tenant;
    int TenantNumber;
    double DefaultTenantPD;
    int StartMonth;
    int EndMonth;
    int RentPSF;
    vector<double> OccupancyVector;
    vector<double> RentVector;
};

// Class variable declaration (occuring inside function)
vector<SpaceBlockRentRoll> RentRoll;
Run Code Online (Sandbox Code Playgroud)

此外,这是递归发生的函数的片段

for (int s=1; s<=NumofPaths; ++s) {
    TenantCounter = 0;
    RemainingTenantSF = t1SF;
    if (RemainingTenantSF > 0) {
        while (RemainingTenantSF > 0) {
            TenantCounter = …
Run Code Online (Sandbox Code Playgroud)

c++ bad-alloc

4
推荐指数
1
解决办法
5414
查看次数

为什么我得到"无效分配大小:4294967295字节"而不是std :: bad_alloc异常?

我编写了以下代码来为数组分配内存:

try {
    int n = 0;
    cin >> n;
    double *temp = new double[n];
    ...
}
catch(exception& e) {
    cout << "Standard exception: " << e.what() << endl;
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

当然我正在检查n是否为负值等但是当我输入一些超过536*(10 ^ 6)的大数字时,我没有得到一个错误的alloc异常但是"无效的分配大小:4294967295字节"崩溃.

EG我输入n = 536*(10 ^ 6) - > bad-alloc异常我输入n = 537*(10 ^ 6) - >无效分配大小:4294967295字节 - >崩溃

任何想法为什么会这样?

c++ arrays memory-management bad-alloc

4
推荐指数
1
解决办法
7397
查看次数

抛出"bad_alloc"的最常见原因是什么?

是否存在与内存相关的更频繁的错误抛出bad_alloc?我知道这意味着内存分配失败了,但在代码中导致这种情况的最常见错误是什么?

c++ bad-alloc c++11

4
推荐指数
1
解决办法
248
查看次数

在导入 torch_geometric 抛出“std::bad_alloc”实例后终止调用

我正在用 python 编写并收到错误:

“抛出'std :: bad_alloc'实例后调用终止。what
():std :: bad_alloc。
中止(核心转储)”

经过大量的调试,我发现问题的根源是:

import torch_geometric
Run Code Online (Sandbox Code Playgroud)

我什至只用这行代码创建了一个文件,但仍然收到错误。
我正在 conda 环境(4.10.3)中运行,我确保在 conda 环境中安装了 torch_geometric。我尝试删除并重新安装,但这不起作用。
我还尝试删除并重新安装 torch/cuda。
我用谷歌搜索了这个错误,但似乎只提出了数据分配方面的问题,但我不确定这会是一个问题,因为我只是导入 torch_geometric。

有任何想法吗?

bad-alloc python-import importerror pytorch pytorch-geometric

4
推荐指数
1
解决办法
2749
查看次数

如何在 C++ 中使用自定义消息抛出 std::bad_alloc?

由于 VS2008 类 bad_alloc 不提供带有字符串参数的构造函数。有没有可能在不覆盖这样的类的情况下创建自定义消息?

// this is only pseudo-code
class custom_exception : bad_alloc {
public:
    string Message;
    custom_exception(string m) {Message = m;}
}
Run Code Online (Sandbox Code Playgroud)

c++ bad-alloc

3
推荐指数
1
解决办法
1559
查看次数

抛出错误的alloc

在尝试使用boost托管共享内存时,我收到了'bad_alloc'.我已经从他们的快速指南中复制了这个不耐烦的提升示例,并将我自己的更改纳入其中.我的代码在下面,我已经注释掉了示例内容并在其下面编写了我自己的代码.我还提供了一些调试和测试的东西.

有没有人有任何想法?任何帮助是极大的赞赏!

-M

#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/containers/map.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/containers/string.hpp>
#include <boost/interprocess/exceptions.hpp>

#include <functional>
#include <utility>
#include <iostream>
#include <string>

#define space_name "MySharedMemorydfgdfhgd"
namespace std{


}

int main ()
{

using namespace boost::interprocess;


//Remove shared memory on construction and destruction

struct shm_remove
{
    shm_remove() { shared_memory_object::remove(space_name); }
    ~shm_remove(){ shared_memory_object::remove(space_name); }
} remover;

typedef int    KeyType;
typedef boost::interprocess::managed_shared_memory::allocator<char>::type char_allocator;
//typedef boost::interprocess::allocator<char, boost::interprocess::managed_shared_memory::segment_manager> char_allocator;
typedef boost::interprocess::basic_string<char, std::char_traits<char>, char_allocator> shm_string;

struct certificateStorage{
    int certificate_id;        
    certificateStorage( int _certificate_id, const char* _certificate, const char* …
Run Code Online (Sandbox Code Playgroud)

c++ memory boost bad-alloc

3
推荐指数
1
解决办法
2925
查看次数

QString 抛出 bad_alloc 异常

我有问题。我使用以下代码将 std::string 转换为 QString。

std::string testStdStr = "Hello";
QString test = QString::fromStdString(testStdStr);
Run Code Online (Sandbox Code Playgroud)

此代码在 MSVC 2013 Prof 下引发 bad_alloc 异常,但仅在调试模式下!如果我在发布模式下编译,一切都会按预期工作。

一些附加信息:SUBSYSTEM 更改为 Windows 并且入口点设置为 mainCRTStartup

在初始化 QString 对象时抛出异常!有什么建议?如果您需要其他信息,请询问!

qt bad-alloc visual-c++

3
推荐指数
1
解决办法
1479
查看次数

C++创建巨大的矢量

对于一个过程,我试图运行我需要有一个std::vectorstd::tuple<long unsigned int, long unsigned int>.我现在正在做的测试应该创建一个47,614,527,250(大约470亿)元组的向量,但实际上在创建错误时会崩溃terminate called after throwing an instance of 'std::bad_alloc'.我的目标是使用此脚本,其矢量大约是该大小的两倍.代码是这样的:

arc_vector = std::vector<std::tuple<long unsigned int, long unsigned int>>(arcs);
Run Code Online (Sandbox Code Playgroud)

带引用值的arcsa 在哪里long unsigned int.

在这种情况下,我可以增加内存大小吗?这个脚本运行在40核机器上,内存大小为200GB,所以我知道内存本身不是问题.

c++ memory memory-management bad-alloc c++11

3
推荐指数
1
解决办法
698
查看次数

C++ bad_alloc 异常未捕获

我有以下代码来分配大量数据,如果它超过可用内存(这里是 32GB),它应该抛出异常。使用:

bool MyObject::init()
{    
    char* emergency_memory = new char[32768];
    try
    {
        std::vector<std::vector<MyData> > data_list;
        std::vector<MyData> data;
        data.resize(1000);

        for(size_t i=0; i<1000; i++)
        {
           data_list.push_back(data);
           data_list.push_back(data);
        }       
    }
    catch (const std::bad_alloc& e)
    {
        delete[] emergency_memory;        
        std::cout << "Data Allocation failed:" << e.what() << std::endl;
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

异常永远不会被捕获。应用程序刚刚终止,或者使操作系统崩溃。

我做错了什么?

c++ stdvector bad-alloc

3
推荐指数
1
解决办法
2452
查看次数