![](/img/trans.png)
[英]What will happen when i try to add one more value compared to the specified size of array in 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.