c ++ уничтожить переменную stai c в функции с выделением памяти - PullRequest
1 голос
/ 09 апреля 2020

У меня небольшой вопрос по поводу c ++

как я могу уничтожить этот код без утечки памяти?

void classA::funcA()
{
    static char* cArr = new char[10];
}

просто не пишите так, как этот стиль?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Вместо этого можно использовать тип RAII или избежать выделения:

static char cArr[10];
static auto cArr2 = std::make_unique<char[]>(10);
0 голосов
/ 09 апреля 2020

Объекты в хранилище stati c существуют на протяжении всей программы.

Указанный динамический c объект может быть удален раньше, чем завершение программы, если вы не используете объект для вся продолжительность Но если это так, то зачем вам владеть объектом через указатель в хранилище stati c?

Факт утечки памяти из-за технической утечки по истечении времени жизни указателя stati c не проблема, потому что программа заканчивается.

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

...