Goldfish777
@Goldfish777
Моддинг игр серии GTA.

Как освободить память сразу всем полям структуры?

Здравствуйте.
Вот пример кода:

struct BUFF
{
    int * a;
    int * b;
    int * ...;
};

main() {
    BUFF buff;

    buff.a = new int[32];
    buff.b = new int[32];
    buff.... = new int[32];
    // какие-то действия ...

    // освобождение памяти
    delete[] buff.a;
    delete[] buff.b;
    delete[] buff.....;
}


Вопрос:
Есть ли способы удаления сразу всех полей структуры а не по одной строчки "delete[] buff...."?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
15432
@15432
Системный программист ^_^
Написать конструктор и деструктор для структуры?

struct BUFF
{
    int * a;
    int * b;
    int * ...;
    BUFF();
    ~BUFF();
};

BUFF::BUFF()
{
    a = new int[32];
    b = new int[32];
    .... = new int[32];

}

BUFF::~BUFF()
{
    delete[] a;
    delete[] b;
    delete[] ...;
}


Если принципиально, можно создать массив из указателей
struct BUFF
{
    int * abc[3];
};

и в цикле их создавать / удалять
for (int i = 0; i < 3; ++i)
{
    delete[] buff.abc[i];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы