据我了解 std::deque 的 push_back() 复制我输入的数据。因此,当我引用动态数据(例如动态字节数组或 std::vector)时,它只复制对它的引用. 现在我尝试了解是否必须在 std::deque 的 pop_back() 之前删除/释放动态分配的数据?给出了 C++11。希望有人可以帮助我!下面我将我的两个场景作为代码示例:
情景一:
typedef struct mystruct{
uint8_t* data;
//other fields may be here
} mystruct_t;
mystruct_t my;
my.data = new uint8_t[3];
my.data[0] = 'A';
my.data[1] = 'B';
my.data[2] = 'C';
std::deque<mystruct_t> d;
d.push_back(my);
// ...
// Need to delete/free data here, before d.pop_back()?
d.pop_back();
场景二:
typedef struct mystruct{
std::vector<uint8_t> data;
// other fields may be here
} mystruct_t;
mystruct_t my;
my.data.push_back('A');
my.data.push_back('B');
my.data.push_back('C');
std::deque<mystruct_t> d;
d.push_back(my);
// ...
// Need to delete/free data here, before d.pop_back()?
d.pop_back();