草庐IT

St9bad_alloc

全部标签

c++ - Visual Studio 2010 C++ : malloc()/HeapAlloc always allocates new page for even smallest alloc size

我有一个相当大的C/C++项目,我一直在试图找出它消耗过多内存的原因(通过任务管理器中的“工作集”判断)。我终于找到了奇怪的行为,即使是最小的malloc()请求,它也会分配一个全新的4k页面。像这样的代码for(intbla=0;bla这应该会增加区区10KB的内存消耗,最终会增加4MB,因为它分配了1000个4kB。真正令人沮丧的部分是我无法将其作为独立文件重现。仅包含上述代码的小型应用程序就可以正常工作。只有大项目才会表现出错误的行为。直接回答一些明显的建议:我正在引入与大项目相同的库,并确保编译标志相同"new"的行为方式相同在Debug和Release模式下都会发生我真的追踪

c++ - clang 编译的程序在 std::any_cast 期间抛出 std::bad_any_cast

我正在开发一个使用std::any的应用程序.最近我发现,当我用clang编译它时,我得到了bad_any_caststd::any_cast之一的异常我确定我正在转换为正确的类型。我添加了一些typeid(T).name()的转储至cout确保插入std::any的类型没有区别并输入我正在尝试转换到的内容。我试图编写简单的程序来演示它,但我无法重现它。值得一提的是:我正在传递一包std::any(每个内部包含不同的类型)并且只有一个有问题(它是std::map)。当我切换到boost::any时问题消失了(或者如果我使用gcc构建我的应用程序)。我已经深入了解std::any_cas

上市公司现金流2000-2022营业收入净利润股权自由现金回收率再投资比率折旧摊销营运指数沪深北证 全部A股上市公司,非ST 2000-2022cn国rd泰s样本容量:67396个观测值数

上市公司现金流2000-2022营业收入净利润股权自由现金回收率再投资比率折旧摊销营运指数沪深北证全部A股上市公司,非ST2000-2022cn国rd泰s样本容量:67396个观测值数据指标:净利润现金净含量、营业收入现金含量、筹资活动债权人现金净流量、折旧摊销、公司现金流、股权现金流、现金满足投资比率、营运指数、公司自由现金流、企业自由现金流、股权自由现金流...数据文件:含原始数据、面板数据dta(stata应用便捷)股票代码    股票简称    统计截止日期    报表类型编码    行业代码    行业名称    公告来源    净利润现金净含量    净利润现金净含量TTM    

c++ - 如何使我的 uninitialised_allocator 安全?

来自thisquestion,我想用unitialised_allocator比如说,std::vector避免在构建时对元素进行默认初始化(或resize()的std::vector(有关用例,另请参阅here)。我当前的设计如下所示://basedonadesignbyJaredHoberocktemplatestructuninitialised_allocator:base_allocator::templaterebind::other{//addedbyWalterQ:ISTHISTHECORRECTCONDITION?static_assert(std::is_trivi

c++ - 如何防止在 boost::fast_pool_allocator 管理的对象上调用析构函数?

我想利用boost::fast_pool_allocator的以下广告功能(参见theBoostdocumentationforBoostPool):Forexample,youcouldhaveasituationwhereyouwanttoallocateabunchofsmallobjectsatonepoint,andthenreachapointinyourprogramwherenoneofthemareneededanymore.Usingpoolinterfaces,youcanchoosetoruntheirdestructorsorjustdropthemoffin

c++ - 为什么 std::allocator 要求 propagate_on_container_move_assignment 为真?

根据当前标准(20.7.9),std::allocator有一个成员propagate_on_container_move_assignment设置为true_type:templateclassallocator{public:typedefsize_tsize_type;typedefptrdiff_tdifference_type;typedefT*pointer;typedefconstT*const_pointer;typedefT&reference;typedefconstT&const_reference;typedefTvalue_type;templatestruc

c++ - 为什么这个 EXC_BAD_ACCESS 发生在 long long 而不是 int 上?

我遇到了一个EXC_BAD_ACCESS,其中包含一段处理数据序列化的代码。该代码仅在设备(iPhone)上失败,在模拟器上不会。它还仅在某些数据类型上失败。这是重现问题的测试代码:templatevoidtest_alignment(){//allocatememoryandrecordtheoriginaladdressunsignedchar*origin;unsignedchar*tmp=(unsignedchar*)malloc(sizeof(unsignedshort)+sizeof(T));origin=tmp;//pushdatawithsizeof2bytes*((u

c++ - 在基类中调用 shared_from_this() 时的 bad_weak_ptr

我有一个SuperParent类,一个Parent类(派生自SuperParent)并且都包含一个shared_ptr到一个Child类(它包含一个weak_ptr到一个SuperParent)。不幸的是,我在尝试设置Child的指针时遇到了bad_weak_ptr异常。代码如下:#include#include#include#includeusingnamespaceboost;classSuperParent;classChild{public:voidSetParent(shared_ptrparent){parent_=parent;}private:weak_ptrpare

c++ - 程序以 std::bad_alloc 终止

我正在运行一个C++程序,它在任意点死于std::bad_alloc,这取决于指定的输入。以下是关于该计划的一些观察/要点:对于较短的运行(运行时间取决于输入),程序会正常完成。问题只出现在较大的运行中。该程序没有任何可检测到的内存泄漏。这已通过Valgrind/Memcheck进行了较小的运行检查。此外,我的整个代码没有任何指针(所有动态分配都是由库完成的,例如,在std::vector和std::string中;它是这些库类中的分配失败),因此内存泄漏的可能性极小。几个对象在循环中分配,然后移动到容器中。这些对象中有几个是为了在程序快结束之前一直存在。我怀疑堆碎片可能是个问题(请参

c++ - 在 Visual Studio 中调用 std::swap 时的 std::bad_function_call

我正在尝试将我的代码从Linux移植到Windows。但是,对于VisualStudio,我的代码因以下错误而崩溃:MicrosoftC++exception:std::bad_function_callatmemorylocation这是我的代码:#includeclassFoo{public:Foo(int):m_deleter{[](){}}{}Foo(constFoo&)=delete;Foo(Foo&&)=default;Foo&operator=(constFoo&)=delete;Foo&operator=(Foo&&)=default;~Foo(){m_deleter(