allocator

    0热度

    1回答

    我制作了一个简单的堆栈分配器,可用于在堆栈上分配小容器。 我一直在使用这个类一段时间,它一直工作正常。 但是,今天我又切换了调试迭代器(_ITERATOR_DEBUG_LEVEL=2),并且在由此开关激活的调试代码中突然出现访问冲突。 模板编程和标准库编码约定的混合使得这非常难以调试,而且我也不完全是分配器方面的专家。我违反了分配器的某种规则吗? 下面的代码应该能够重现错误。 #include <

    2热度

    1回答

    C++ 17引入了std::aligned_alloc和对齐感知的new,它们可以执行over-aligned分配,但std::allocator呢?它处理的是过度对齐的类型吗?

    1热度

    1回答

    #include <bits/stdc++.h> using namespace std; vector<int> func() { vector<int> a(3,100); return a; } int main() { vector<int> b(2,300); //b.swap(func()); /* why is this no

    2热度

    2回答

    std :: variant有一个uses_allocator的专门化,但不适用于std :: optional。为什么?

    1热度

    1回答

    我觉得在MSVC++中发现了一个错误。或者,也许这是缺乏我的知识,我错过了代码中的东西。我创建了一个自定义分配器: #include <forward_list> #include <iostream> template <class T> class Allocator { public: typedef std::size_t size_type;

    1热度

    2回答

    假设我有一个std::vector<std::string>。 即使我为矢量指定自定义分配器,我的std::string -s仍将使用标准字符串分配器。 我可以使用自定义分配器为容器和容器共享吗?

    0热度

    1回答

    你好我试图从一个列表(在例子foo中)在(end() - 1)到另一个列表(在这个例子中称为bar)中移动一个元素到位置begin()。 唯一的问题是其中一个列表正在使用自定义分配器。 这可能会导致以下错误信息:这里 ../src/TestAllocator.cpp:120:28: error: no matching function for call to ‘std::list<int>:

    3热度

    2回答

    在这段代码中,我得到一个不同的sizeof(T)如果分配器 是一个容器配置的一部分: #include <iostream> #include <set> #include <cstddef> class Item { int a; unsigned char b, c, d; int e, f, g; public: Item()

    1热度

    1回答

    我试图找出有多少内存(以字节为单位)列表正在使用。 的问题是在此示出: 它显示了一个容器列表存储指向其它列表(存储列表)各存储均匀尺寸的元件(比方说每10个字节)。所以第一个存储列表存储了4个元素,接下来是30个,然后是下一个12和10,最后一个是5个元素。所有的元素都是相同的C++类型(这只是普通的旧数据的结构)。 我的目标: 容器列表上方应该有目前的规模可变的,它记录的字节数,他所指向的列表(

    1热度

    1回答

    假设我们有一个类A,并且我有一个指向A对象的指针数组,当我遍历数组中的每个元素时,我可能会导致现金未命中,因为每个对象都在内存中的不同位置,并且它们不对齐在同一个程序块中,因为它是一个指向对象而不是实际对象的指针数组。 我想通过创建一个自定义分配器来解决这个问题,我用它来分配这些对象并将它们的指针放在数组中。分配器确保所有对象在内存中总是彼此相邻,并在一个块中对齐。迭代数组时,这是否解决了现金丢失