草庐IT

Allocator

全部标签

c++ - 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str':非标准语法;使用 '&' 创建指向成员的指针

我正在尝试创建一个可以读取和编译opengl顶点和片段着色器文件的函数,但是我收到了这个错误:'std::basic_string,std::allocator>::c_str':non-standardsyntax;use'&'tocreateapointertomember我不太确定如何修复它。这是我的代码:GLuintshader_load(constGLchar*vertex,constGLchar*fragment){std::stringver=file_read_all(vertex);std::stringfrag=file_read_all(fragment);con

c++ - 为什么分配器常量在 vector 中?

vector在每种类型的构造函数中都有这个constallocator_type&alloc=allocator_type()为什么是常量?我看不出那有什么用。我可以看到传递一个分配器,这样多个vector可以共享同一个池,但可以从另一组vector中分离出来。但是,使用const是否意味着他们只会复制实例数据?复制池或任何它似乎没有用。为什么是常量? 最佳答案 分配器应该具有值语义,这意味着vector按值存储它(注意get_allocator()按值返回)。所以构造函数可以很容易地通过const引用获取分配器并复制它。

c++ - Eigen::aligned_allocator 因 std::unordered_multimap 而失败

我正在尝试在XCode6中编译这段代码:std::unordered_multimap,std::equal_to,Eigen::aligned_allocator>>trackingFailed;它失败了:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_map:1461:5:Static_assertfailed"Invalidallocator::value_type"Eigen3.2.2还需要用aligned_al

c++ - 改进分配器算法实现的建议

我有一个VisualStudio2008C++应用程序,我在其中为标准容器使用自定义分配器,以便它们的内存来自内存映射文件而不是堆。此分配器用于4种不同的用例:104字节固定大小结构std::vector>foo;200字节的固定大小结构304字节固定大小结构n字节字符串std::basic_string,MyAllocator>strn;我需要能够为其中的每一个分配大约32MB的空间。分配器使用std::map跟踪内存使用情况指向分配大小的指针。typedefstd::mapSuperBlock;每个SuperBlock代表4MB内存。有一个std::vector以防一个SuperB

c++ - move 哪个 throw ?

据我了解,move构造函数和move赋值必须标记为noexcept,以便编译器在例如在vector内部重新分配时使用它们。但是,是否存在move分配、move构造可能实际抛出的真实案例?更新:例如,在构造时具有分配资源的类不能是不可抛出的。 最佳答案 However,isthereanyreal-worldcasewhereamove-assign,move-construct(orswap)mightactuallythrow?是的。考虑std::list的实现.end迭代器必须指向列表中的“最后一个元素”。存在std::list

C++ 默认分配器 - 如果大小不等于传递给分配调用的大小,会发生什么?

20.6.9:voiddeallocate(pointerp,size_typen);要求:p应是从allocate()获得的指针值。n应等于作为第一个参数传递给返回p的分配调用的值。效果:释放p引用的存储。备注:使用了::operatordelete(void*)(18.6.1),但未指定何时调用此函数。如果n不等于作为第一个参数传递给返回p的分配调用的值,会发生什么?不解除分配?抛出std::bad_alloc?...编辑:我所说的“应该发生什么”的实际意思是:在自定义实现中抛出或断言可以吗? 最佳答案 和C++标准一样,当没有

c++ - 使用 g++ 4.8 (Mac Ports) 在 Mac OS X 上编译 boost::program_options

我正在尝试编译boost::program_options示例之一,http://svn.boost.org/svn/boost/trunk/libs/program_options/example/first.cpp,使用gcc4.8(通过MacPorts安装)。但是,我不断收到错误消息:Undefinedsymbolsforarchitecturex86_64:"boost::program_options::to_internal(std::basic_string,std::allocator>const&)",referencedfrom:std::vector,std::a

c++ - 为什么不是 std::string::max_size() == std::string::allocator::max_size()

最近我注意到给定std::strings的情况下以下陈述不正确.s.max_size()==s.get_allocator().max_size();我发现这很有趣,默认情况下std::string将使用std::allocator其理论极限为size_type(-1)(是的,我知道我假设2的补码,但这与实际问题无关)。我知道实际限制会比这少得多。在典型的32位x86系统上,内核将占用2GB(可能是1GB)的地址空间,实际上限要小得多。无论如何,GNUlibstdc++的std::basic_string::max_size()似乎返回相同的值,不管它使用的分配器说什么(类似于1073

c++ - Xcode C++ 开发,需要说明

我非常喜欢Xcode提供对语言可能的可用成员函数的洞察力的方式,如果不是因为我今天注意到的一个奇怪现象,我更愿意将它用于文本伴侣。当strings="Teststring";唯一可用的substr签名如图所示据我了解,以及什么iseeonline签名应该是stringsubstr(size_tpos=0,size_tn=npos)const;确实s.substr(1,2);在Xcode中既可以理解又可以工作。为什么当我尝试方法完成时它不显示?(Ctrl-空格键) 最佳答案 Xcode正在正确执行完成,但这不是您所期望的。你实际上已经

ios - 删除图像 Assets 目录中不受支持的版本

我只支持此应用的iOS7,但Assets目录中的AppIcon显示我不需要的iOS5、6版本。顺便说一句,我认为这会导致我出现以下错误:[Allocator]Mappingfailed%d[Allocator]Allocatorinvalid,fallingbacktomalloc 最佳答案 如果您单击images.xcassets,打开AppIcon的属性检查器,您可以取消选择我认为不需要的版本。 关于ios-删除图像Assets目录中不受支持的版本,我们在StackOverflow上