gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:31:39 27 4
gpt4 key购买 nike

我的 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。仔细注意 []

关于c++ - 如何清除 C++ 中的动态数组以及堆栈中有多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com