По какой-то причине на работе я создал структуру с вектором в ней, а затем мне нужно выполнить динамическое размещение на нем. Я немного запутался здесь, так как заметил утечку памяти в коде, и я не знаю, в этом ли проблема или нет, но я определенно так думаю.
struct A{
...
}
struct B{
...
}
struct C{
...
}
struct M{
std::vector<A> a;
std::vector<B> b;
std::vector<C> c;
}
тогда я где-то вкод, который будет выполнять:
M* m_ptr = new M;
for(int i =0; i< xxx; i++){
m_ptr->a.push_back(xxx);
}
for(int i =0; i< xxx; i++){
m_ptr->b.push_back(xxx);
}
for(int i =0; i< xxx; i++){
m_ptr->c.push_back(xxx);
}
, а затем я передам этот указатель другой функции и, в конце концов, удалить его как:
void foo( M * p_ptr ...){
...
...
if(p_ptr !=nullptr){
delete p_ptr;
p_ptr = nullptr;
}
}
foo(m_ptr, ...);
Я начинаю думать, что это нехорошая идея, но я не могу знать наверняка, так как я все еще новичок в C ++.