草庐IT

my_pool_alloc

全部标签

c++ - 如果自定义分配器中不存在重新绑定(bind),std::allocator_traits 是否定义 rebind_alloc?

我正在尝试重新绑定(bind)我的自定义分配器类型,MyAllocator,用于basic_string类,例如:std::basic_string,MyAllocator>...分配器作为MyAllocator传递给上下文,所以我需要重新绑定(bind)分配器。来自std::allocator_traits的cppreference页面,http://en.cppreference.com/w/cpp/memory/allocator_traits:Memberaliastemplates:rebind_alloc:Alloc::rebind::otherifpresent,othe

c++ - 如何追踪 "tcmalloc : large alloc .... "

我的应用打印几行,如:tcmalloc:largealloc4294488064bytes==0x2b968d8000@0x7274320x7273020x727a580x75a07d0x574beb0x5857560x5575df0x5717db0x57108f0x58078c0x302b80610atcmalloc:largealloc4294488064bytes==0x2c97063000@0x7274320x7273020x727a580x75a07d0x574beb0x5857560x5575df0x5717db0x57108f0x58078c0x302b80610atcm

c++ - std::allocator 中的直接初始化与统一初始化

ThisquestionhasalsobeensubmittedtoUsenet,whereitismoreappropriate,butthisisalargerandmorereliableforum.std::allocator::construct被定义为转发其参数参数使用括号打包到对象构造,也就是直接初始化。如果它使用大括号,也就是统一初始化,我们可以初始化从诸如std::make_shared和容器::放置。另外,把内容放上去也是可以接受的将初始化列表放入此类函数的参数列表中,解决initializer_list下的类型推导问题转发。这个备选方案是否被考虑过并被拒绝了?现在

c++ - 诅咒库 : why does getch() clear my screen?

我正在尝试使用C++学习curses库(pdcurses,因为我在Windows操作系统中)。我有一个显示3个窗口的程序,然后是一个while循环来根据getch()捕获的按键进行一些处理。当按下F1键时,循环退出。然而,尽管使用wrefresh()刷新了所有三个窗口,但在我输入第一次按键之前没有任何显示。没有while循环,一切都显示正常。我做了很多测试,好像第一次调用getch()会完全清除屏幕,但后续的不会。我的问题是:我错过了什么?起初,我想也许getch()正在调用一个隐式的refresh(),但为什么后续调用它的行为不同?非常感谢您的帮助。这是代码。#includeintm

c++ - 带有容器和默认分配器的模板模板参数 : can I make my declaration more compact?

我在看这个有趣的话题:https://stackoverflow.com/a/16596463/2436175我的具体案例涉及使用来自opencv的cv::Point_和cv::Rect_的标准容器声明模板函数。我想针对以下模板:我将使用的标准容器类型完成cv::Point_和cv::Rect_定义的基本数据类型我最终做出了以下声明:templateclassContainer_t>voidCreateRects(constContainer_t,std::allocator>>&points,constTvalue,Container_t,std::allocator>>&rects

c++ - 如何从 udp 端点获取 *my* ip

Boost.Asio的udp::endpoint有一个成员是远程地址。因为我在多个接口(interface)上监听(像这样):udp_socket(io_service,udp::endpoint(udp::v4(),port))在我的处理程序中,我不知道哪个网络接口(interface)收到了数据包。如果不遍历网络接口(interface)并在每个接口(interface)上寻找端点地址和我的IP之间的相似性,我能否获得我从中获取消息的接口(interface)的IP? 最佳答案 没有。Boost.Asio不提供识别数据报目标地址

c++ - 使用 std::allocator_traits<A>

我想设计一个类模板,它采用分配器类型(如标准第17.6.3.5节中所定义)作为模板参数。我怎么看std::allocator_traits有助于填补A的任何缺失成员使用默认设置。除此之外,标准库或boost中是否有任何有助于正确使用分配器的内容?特别是:尊重类型定义,如std::allocator_traits::propagate_on_container_copy_assignment,我是否必须在每个类的特殊成员函数中检查这些东西,每个类都有一个A类型的成员??或者是否有一些包装器类型我可以用作成员来代替它来处理这些东西?如果我想通过在用户可见对象旁边存储额外数据来过度分配以减少

c++ - 如何使用 std::scoped_allocator_adapter?

据我了解,std::scoped_allocator_adapter提供一种控制机制,用于指定单独哪个分配器将由容器、其元素、其元素的元素等使用,假设元素本身是容器。也就是说,我无法理解std::scoped_allocator_adapter的语义.BjarneStroustrup在TheC++ProgrammingLanguage,section34.4.4,pg中提供了以下4个示例。1001(在接下来的问题中,我将它们称为Example-1、Example-2等。):Wehavefouralternativesforallocationofvectorsofstrings://v

c++ - 获取 std::bad_alloc 错误;如何交叉验证操作系统是否真的内存不足

我有一个C++程序/Linux,它在运行后2-3秒内开始在32GBRAM上出现错误std::badalloc(并由包装器调用者重新启动)。我真正关心的是解决这个问题,但我想一步一步地去建立我对这个问题的理解的信心。看起来系统无法为new请求分配内存(当操作系统内存不足时会发生这种情况)。当程序运行时,我在另一个终端上以尽可能小的间隔(1秒)运行sar命令,但我看到kbcached是~24GB内存。为什么操作系统无法释放缓存并使该内存可用于new请求?要么1秒时间太多(与程序运行的速度相比),要么我在这里做错了什么。基本上我想交叉验证并确定操作系统确实内存不足,因此无法分配内存,然后从这

c++ - malloc 和 allocate 有什么区别

我遇到了一些代码,它广泛使用了allocate。例如,char*recordDate=allocate(20)我以前从未使用过allocate,因此问题来了,malloc和allocate之间有什么区别?虽然我不清楚它的优势,但我可以说的一个区别是,malloc提供原始内存,而allocate似乎会提供原始内存,但我不必将指针强制转换为特定类型。 最佳答案 来自allocate文档:Allocatesn*sizeof(T)bytesofuninitializedstoragebycalling::operatornew(std::s