[英]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個元素?
new sServerStatus[1024];
將在堆上分配1024個sServerStatus
實例。
其中每個都有MAX_COMPUTERNAME_LENGTH+1
TCHAR
。 (也位於堆上,因為這是分配對象的位置。)
堆棧上唯一的東西是指針 sServersType1
。
要清理所有內容,請注意,您沒有使用new
來分配(2),因此也不需要使用delete
。 銷毀sServerStatus
實例后,將釋放該內存。
但是您將需要釋放使用new
分配的內存。 為此,您需要編寫delete[] sServersType1
。 仔細注意[]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.