我如何检查该点动态分配的单指针是否为null
How can I check whether double pointer that point dynamically allocated single pointer is NULL?
请查看此代码。
#include <iostream>
#include <list>
using namespace std;
void main()
{
list<int*> m_List;
int* i = new int(1);
m_List.push_back(i);
list<int**> m_pList;
m_pList.push_back(&m_List.front());
list<int*>::iterator iter = m_List.begin();
delete *iter;
*iter = NULL;
cout << *iter << endl;
cout << &*iter << endl;
iter = m_List.erase(iter);
list<int**>::iterator iter2 = m_pList.begin();
cout << **iter2 << endl;
cout << *iter2 << endl;
}
结果:
00000000
00A31A90
DDDDDDDD
00A31A90
&*iter
等于*iter2
,但*iter
不等于**iter2
。
请教我为什么会发生这种情况以及如何解决。
完成m_List.erase(iter);
后,m_List
为空,**iter2
不确定。
(*iter2
是m_List
的第一个元素的地址,不存在。)
很难说如何"解决这个问题",因为尚不清楚"这个"是什么。
这是因为您擦除了它。
当您从m_list中删除元素时,您会使以前的&amp; m_list.front()无效。剩下的就是未定义的垃圾。
不要删除它,结果将是您期望的。
但是,您的指针,列表和迭代器的混合非常钝和奇怪,您可能想看看是否有一些方法可以稍微清理您的真实代码。
相关文章:
- OOP 中的单成员指针
- C++:将值 int(例如:0x00AAFAD8)转换为指针(指针本身也是 0x00AAFAD8 值)
- 在现代 c++ 中,有什么好方法可以获取 arg 类型列表表单函数指针吗?
- 未分配正在释放的指针 - 指针问题
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 指针?指针功能
- 简单的功能大小;了解指针-指针差异
- 当我删除指针指针时会发生什么
- 将向量向量转换为指针指针
- 理解c++中的指针指针以获得函数调用
- 在指针指针中更改价值
- 指针指针,动态内存分配
- 如何在不取消引用指针的情况下返回指针指针值?
- 指针指针:std:vector vs. 数组
- C :指针与指针指针在二进制树中插入节点
- 应将常量传播到成员指针指针
- 类指针指针
- 指向成员的指针:指针值代表什么
- 需要访问指向结构的指针+指针类型的向量中的interator所指向的元素
- 如何删除单例指针