簡體   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