0

如何通过取消引用 List 指针来访问 C++ 中的列表?

执行以下操作时出现 bad_alloc 错误:

 List My_List = *ls;

ls是一个List*。在代码之前,我有:

List* ls = & Temp_List;

我将 的值ls用作整数。我通过不同的功能传递它。现在我想将它转换回List*并取消引用它,我得到了错误

4

3 回答 3

1

如果你在堆栈上分配列表,它的地址可能会改变。但是如果你在堆上分配它,你不会丢失指向列表的指针(new 或 malloc)

于 2012-11-01T14:19:07.953 回答
0

试试这个,看看,

List *My_List = ls;
于 2012-10-17T20:29:22.967 回答
0

实际上,您确实在这段代码中取消了对列表指针的引用:*ls;

然后您在此代码中的堆栈上创建了List My_List新的列表对象:并 在这段代码中将您的列表复制到此列表中: <newly created list> = <your list reference>

(呵呵。在应用取消引用运算符后,您将获得引用。这对您来说是 c++)

在这个复制过程中你可能会得到 std::bad_alloc 因为复制列表涉及内存分配,并且可能你的原始列表被破坏,因此指向原始列表的指针指向一些随机垃圾,并且基于这个垃圾程序确定它应该有多少内存分配用于列表复制。因此,请确保您的原始列表仍然有效。

或者像这样修复你的代码:List& My_List = *ls然后在某个地方发生崩溃。

于 2012-10-17T22:26:44.517 回答