Могу ли я иметь структуру с векторным членом, а затем выполнить динамическое распределение - PullRequest
0 голосов
/ 19 октября 2019

По какой-то причине на работе я создал структуру с вектором в ней, а затем мне нужно выполнить динамическое размещение на нем. Я немного запутался здесь, так как заметил утечку памяти в коде, и я не знаю, в этом ли проблема или нет, но я определенно так думаю.

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 ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...