簡體   English   中英

C ++中的STL列表指針

[英]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.

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