Как очистить динамический массив в C ++ и сколько стоит в стеке?

У меня есть структура в моей программе C ++. В конце своей функции я делаю delete [], чтобы освободить выделенную память. Как стереть все элементы в коде без выполнения цикла for ()?

struct sServerStatus
{
TCHAR sServer[MAX_COMPUTERNAME_LENGTH+1]; // The NetBIOS name of the computer + 1 null terminating character.
};
sServerStatus *sServersType1 = new sServerStatus[1024];

Q1. Как очистить массив после заполнения некоторых элементов? Я использую SecureZeroMemory?

SecureZeroMemory(sServersType1 , sizeof(sServersType1 ));

Q2. Что находится в стеке? Я предполагаю, что выделенное пространство в стеке просто MAX_COMPUTERNAME_LENGTH + 1 и 1024 элемента находятся в куче?

0

Решение

  1. new sServerStatus[1024]; выделит 1024 sServerStatus экземпляры в кучу.

  2. Каждый из них имеет MAX_COMPUTERNAME_LENGTH+1 TCHARs. (Также в куче, так как там расположены объекты.)

Единственное в стеке указатель sServersType1.

Чтобы очистить все, обратите внимание, что вы не использовали new выделить (2), так что вам не нужно использовать delete или. Эта память будет освобождена раз sServerStatus Экземпляр разрушен.

Но вам нужно освободить память, выделенную с помощью new, Для этого нужно написать delete[] sServersType1, Обратите внимание на [],

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]