如何清除动态数组在c++和多少是在堆栈上

How to clear dynamic array in C++ and how much is on the stack?

本文关键字:c++ 多少 堆栈 数组 何清除 清除 动态      更新时间:2023-10-16

我的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。如何在我填满一些项后清除数组?我是否使用securezerommemory ?

SecureZeroMemory(sServersType1 , sizeof(sServersType1 ));

Q2。堆栈上有什么?我假设堆栈上分配的空间只是MAX_COMPUTERNAME_LENGTH+1, 1024个元素在堆上?

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

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

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

为了清理一切,请注意您没有使用new来分配(2),因此您也不需要使用delete。一旦sServerStatus实例被销毁,这些内存将被释放。

但是您需要释放使用new分配的内存。要做到这一点,您需要编写delete[] sServersType1。注意[] .