У меня есть структура в моей программе 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 элемента находятся в куче?
new sServerStatus[1024];
выделит 1024 sServerStatus
экземпляры в кучу.
Каждый из них имеет MAX_COMPUTERNAME_LENGTH+1
TCHAR
s. (Также в куче, так как там расположены объекты.)
Единственное в стеке указатель sServersType1
.
Чтобы очистить все, обратите внимание, что вы не использовали new
выделить (2), так что вам не нужно использовать delete
или. Эта память будет освобождена раз sServerStatus
Экземпляр разрушен.
Но вам нужно освободить память, выделенную с помощью new
, Для этого нужно написать delete[] sServersType1
, Обратите внимание на []
,
Других решений пока нет …