[英]STL List pointers in C++
如何通過取消引用列表指針來訪問C ++中的列表?
我在執行時收到bad_alloc錯誤:
List My_List = *ls;
ls
是一個List*
。 在編寫代碼之前,我有:
List* ls = & Temp_List;
我將ls
的值用作整數。 我通過不同的功能。 現在,我想將其投射回List*
並取消引用,我得到了錯誤
如果在堆棧上分配列表,則其地址可能會更改。 但是,如果在堆上分配它,則不會丟失指向列表的指針(新的或malloc的)
試試看,
List *My_List = ls;
實際上,您確實在這段代碼中取消了對列表指針的引用: *ls;
然后,您使用以下代碼在堆棧上創建了新的列表對象: List My_List
並將您的列表通過以下代碼List My_List
復制到該列表中: <newly created list> = <your list reference>
(呵呵。在應用取消引用運算符后,您將獲得引用。這是適合您的c ++)
並且在此復制過程中,您可能會得到std :: bad_alloc,因為復制列表涉及內存分配,並且可能原始列表已被破壞,因此指向原始列表的指針指向了一些隨機垃圾,並根據此垃圾程序確定了該內存應該多少分配用於列表復制。 因此,請確保您的原始列表仍然有效。
或像這樣修復您的代碼: List& My_List = *ls
,稍后再崩潰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.