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對象的指針數組,當我遍歷數組中的每個元素時,我可能會導致現金未命中,因爲每個對象都在內存中的不同位置,並且它們不對齊在同一個程序塊中,因爲它是一個指向對象而不是實際對象的指針數組。 我想通過創建一個自定義分配器來解決這個問題,我用它來分配這些對象並將它們的指針放在數組中。分配器確保所有對象在內存中總是彼此相鄰,並在一個塊中對齊。迭代數組時,這是否解決了現金丟失