如何通過取消引用List指針來訪問C++中的列表?C++中的STL列表指針
我這樣做時,你得到bad_alloc的錯誤:
List My_List = *ls;
ls
是List*
。在代碼之前,我有:
List* ls = & Temp_List;
我使用的ls
的值看作整數。我通過了不同的功能。現在,我想將它轉換回List*
和去引用它,我得到的錯誤
如何通過取消引用List指針來訪問C++中的列表?C++中的STL列表指針
我這樣做時,你得到bad_alloc的錯誤:
List My_List = *ls;
ls
是List*
。在代碼之前,我有:
List* ls = & Temp_List;
我使用的ls
的值看作整數。我通過了不同的功能。現在,我想將它轉換回List*
和去引用它,我得到的錯誤
如果您在堆棧上分配列表,其地址可能會更改。但是如果你把它分配在堆上,你不會失去指向列表的指針(new或者malloc)
其實,你沒有解除引用列表指針在這一段代碼: List My_List
和複製列表在此列表中的這段代碼:
然後你堆棧在此代碼上創建新的列表對象
(heh。在應用解引用運算符後,您將獲得參考。這是你的C++)
在這個副本中,你可能會得到std :: bad_alloc,因爲複製列表涉及內存分配,可能你的原始列表被破壞,因此你的指向原始列表指向一些隨機垃圾,並基於這個垃圾程序決定它應該爲列表複製分配多少內存。所以請確保您的原始列表仍然存在。
或修復您的代碼,如下所示:List& My_List = *ls
並在稍後的某處出現故障。
我認爲你是對的。代碼中的某處,第一個列表被銷燬。因爲早些時候我測試了相同的方法,它使我能夠訪問列表。但我還不知道爲什麼我的初始清單已被銷燬! –
當你取消引用ls時'Temp_List'仍然存在嗎? – juanchopanza
這是關於'std :: list'或其他列表類型的問題嗎?請澄清這個問題。 –
應該是。沒有做任何破壞它的事情。 –