如何通过取消引用 List 指针来访问 C++ 中的列表?
执行以下操作时出现 bad_alloc 错误:
List My_List = *ls;
ls
是一个List*
。在代码之前,我有:
List* ls = & Temp_List;
我将 的值ls
用作整数。我通过不同的功能传递它。现在我想将它转换回List*
并取消引用它,我得到了错误
如果你在堆栈上分配列表,它的地址可能会改变。但是如果你在堆上分配它,你不会丢失指向列表的指针(new 或 malloc)
试试这个,看看,
List *My_List = ls;
实际上,您确实在这段代码中取消了对列表指针的引用:*ls;
然后您在此代码中的堆栈上创建了List My_List
新的列表对象:并 在这段代码中将您的列表复制到此列表中:
<newly created list> = <your list reference>
(呵呵。在应用取消引用运算符后,您将获得引用。这对您来说是 c++)
在这个复制过程中你可能会得到 std::bad_alloc 因为复制列表涉及内存分配,并且可能你的原始列表被破坏,因此指向原始列表的指针指向一些随机垃圾,并且基于这个垃圾程序确定它应该有多少内存分配用于列表复制。因此,请确保您的原始列表仍然有效。
或者像这样修复你的代码:List& My_List = *ls
然后在某个地方发生崩溃。