0

我的 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 个元素在堆上?

4

1 回答 1

3
  1. new sServerStatus[1024];将在堆上分配 1024 个sServerStatus实例。

  2. 每一个都有MAX_COMPUTERNAME_LENGTH+1 TCHARs。(也在堆上,因为这是分配对象的地方。)

堆栈上唯一的东西是指针 sServersType1

要清理所有内容,请注意您没有使用new分配 (2),因此您也不需要使用deletesServerStatus一旦实例被破坏,该内存将被释放。

但是您需要释放您使用分配的内存new。这样做你需要写delete[] sServersType1。仔细注意[].

于 2014-03-27T20:05:15.030 回答