草庐IT

bad-alloc

全部标签

c++ - 奇怪的 std::bad_alloc

据我所知,可以抛出std::bad_alloc的三个原因:进程请求的内存多于可提供的内存地址空间过于分散,无法满足对大块连续内存的请求堆管理数据结构已损坏我们的代码会遇到std::bad_alloc,但上述原因似乎都不适用。数据结构是一个存储为顶点std::list的图,其中每个顶点再次存储一个std::list的边,它是其中的一部分以及一些连续的数据。对于小图(由于在较大的block中分配更多内存时没有问题,因此应排除上述原因1.和2.。在某些部分,我们以一种非常容易出错的方式使用指针,因此我们可能会破坏堆数据结构。但是当在较小的实例上运行时,valgrind的memcheck报告我

c++ - 在带有 std::unordered_map 的 std::scoped_allocator_adaptor 中使用自定义分配器

我正在尝试将一个简单的内存池分配器与std::unordered_map一起使用。我在std::string和std::vector中似乎成功地使用了同一个分配器。我希望unordered_map(和vector)中包含的项目也使用此分配器,因此我将我的分配器包装在std::scoped_allocator_adaptor中。简化定义集:templateusingmm_alloc=std::scoped_allocator_adaptor>;usingmm_string=std::basic_string,mm_alloc>;usingmm_vector=std::vector>;us

c++ - 一些 STL 容器的 std::allocator 不匹配

使用不匹配的std::allocator特化(当然,除了它对void的特化)作为STL容器(不是所有容器)的模板参数在技术上是否有效,但下面列举的加上unordered_(multi)map/set)?以下代码编译正常。#include#include#include#include#includeintmain(){structA{booloperator>l;std::forward_list>fl;std::deque>d;std::set,std::allocator>s;std::multiset,std::allocator>ms;std::map,std::allocat

C++ 使用 getline() 打印 : pointer being freed was not allocated in XCode

我正在尝试使用std:getline()但出现了一个奇怪的运行时错误:malloc:*errorforobject0x10000a720:pointerbeingfreedwasnotallocated*setabreakpointinmalloc_error_breaktodebug这是产生此错误的代码://main.cpp#include#includeintmain(intargc,char*constargv[]){std::istringstreammy_str("demostringwithspaces");std::stringword;while(std::getlin

c++ - 标准容器元素类型和std::allocator类型不一样是不是错了?

取自here(很旧):It'salsoimportantthatthetypeusedfortheallocatortemplateparameterandthetypeusedastheelementtypeinastandardcontaineragree.Forinstance:std::list>//Wrong!won'twork.问题以上说法是否正确(或曾经正确过)?无论我为T设置什么,我所做的任何测试似乎都可以正常工作在std::allocator.例如,std::vector>编译和工作正常推回和删除元素等。(据我所知,std::allocator::rebind::ot

c++ - 什么会导致流进入 "bad"状态?

在C++中,每个流都有一个bad位:Thisflagissetbyoperationsperformedonthestreamwhenanerroroccurswhilereadorwritingdata,generallycausingthelossofintegrityofthestream.Source什么会导致流“失去完整性”并进入bad状态?这与fail状态不同,后者最常发生在输入流试图将值存储到不能接受该值的变量中时(例如尝试将字符串存储到整数变量中)).请注意,此问题是c++filebadbit的更一般形式,特定于文件输入流;这个问题不是完全重复的,因为它通常适用于输入和

c++ - 为什么我的程序在内存不足时偶尔会出现段错误而不是抛出 std::bad_alloc?

我有一个程序可以实现多种启发式搜索算法和多个域,旨在通过实验评估各种算法。该程序是用C++编写的,使用GNU工具链构建,并在64位Ubuntu系统上运行。当我运行我的实验时,我使用bash的ulimit命令来限制进程可以使用的虚拟内存量,这样我的测试系统就不会开始交换。某些算法/测试实例组合达到了我定义的内存限制。大多数时候,程序会抛出一个std::bad_alloc异常,该异常由默认处理程序打印,此时程序终止。有时,程序不会发生这种情况,而只是出现段错误。为什么我的程序偶尔会在内存不足时出现段错误,而不是报告未处理的std::bad_alloc并终止? 最

运行代码报错:FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

一、背景    进公司拉取项目代码,npminstall拉取依赖后,运行控制台报错:FATALERROR:ReachedheaplimitAllocationfailed-JavaScriptheapoutofmemory二、原因分析        JavaScriptheapoutofmemory说的是 JavaScript运行内存不足,其实就是Node运行时内存不足。Node中通过script使用的内存只是很小的一部分(64位系统下约为1.4GB,32位系统下约为0.7GB),当我们的开发中包比较大时,就容易形成内存不足。三、解决方案    1、修改Node运行内存(推荐使用):关闭所有打

如何快速定位 elastic search 运行出现的 bug HTTP/1.1 400 Bad Request type is missing VALUE_NUMBER_INT

文章目录前言HTTP/1.1400BadRequesttypeismissingVALUE_NUMBER_INTESBUG快速定位前言因为最近项目上线,正好碰到了elasticsearch的许多问题,又恰好前几天写了es相关使用。就想梳理一些关于寻找elasticsearchbug的一些小技巧。先描述一下遇到的几个bugHTTP/1.1400BadRequest@TestpublicvoidtestExist()throwsIOException{GetIndexRequestrequest=newGetIndexRequest();booleanexists=client.indices()

RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`解决方案

【问题描述】之前代码可以正常运行,后面扩充了数据集后,再在GPU跑深度学习训练模型的程序时报如下错误,但又没有提示CUDAoutofmemory。RuntimeError:CUDAerror:CUBLAS_STATUS_ALLOC_FAILEDwhencalling`cublasCreate(handle)`【解决办法1】将程序改在cpu上运行,发现可以正常运行,但是这个速度会非常慢,耗费时间会比较久。--devicecpu【解决办法2】尝试调小了训练模型时用的batchsize,可以正常运行。