繁体   English   中英

如何清除C ++中的动态数组以及堆栈中有多少?

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

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

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

  2. 其中每个都有MAX_COMPUTERNAME_LENGTH+1 TCHAR (也位于堆上,因为这是分配对象的位置。)

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

要清理所有内容,请注意,您没有使用new来分配(2),因此也不需要使用delete 销毁sServerStatus实例后,将释放该内存。

但是您将需要释放使用new分配的内存。 为此,您需要编写delete[] sServersType1 仔细注意[]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM