簡體   English   中英

在c ++中多次初始化數組時會發生什么?

[英]what will happen when an array is initialized more than once in c++?

當我多次在C ++中初始化變量時,內存位置會發生什么變化? 例如:

LPWSTR sampleString = new whcar_t[10];
//some operations here
sampleString = new wchar_t[2];
//some operations here
sampleString = new wchar_t[25];
//some operations here

如果我通過使用delete [] sampleString;刪除內存delete [] sampleString; 是否會清除所有關聯的內存位置?

不,只有最后一個。 所有其余的將永遠丟失。 這就是所謂的“內存泄漏”。

不,您必須將每個new[]與單獨的delete[]配對。

在您的示例中,前兩個分配將丟失。 內存泄漏。

不,您所有先前分配的內存都丟失了。 你應該考慮使用智能指針

請注意,如果您將智能指針指向一個對象而不是一個數組,則可以使用它。
如果用struct / class封裝數組就可以了。 您還可以使用STL Vector(使用您選擇的智能指針)

如果我通過使用delete [] sampleString刪除內存; 是否會清除所有關聯的內存位置?

否,sampleString一次只能存儲一個引用,因此,將其發送給delete []它只知道最后一個引用。

由於C++默認情況下沒有垃圾回收,因此在手動分配/取消分配時,您必須手動進行內存管理。

正如某些人指出的那樣,您可能要使用智能指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM