更改队列指针成员的值需要在 C++ 中出现奇怪的错误
change queue pointer member's value will need to weired fault in c++
我是 c/c++ 的新手,遇到了一个非常奇怪的问题。 下面的这个简单代码将导致分段错误。 谁能告诉我这个问题怎么会发生? 谢谢
#include <queue>
#include <iostream>
using namespace std;
class hhh{
private:
public:
int *root=NULL;
void cons(){
queue<int*> q;
q.push(root);
q.front()=new int(8);
cout<<*(q.front())<<endl;
cout<<*root<<endl;
}
};
int main(){
hhh *h1=new hhh();
h1->cons();
}
q.push(root);
复制队列中的root
,因此当您执行q.front()=new int(8);
时,您正在修改队列中的指针,而不是初始root
。
所以你的root
变量总是NULL
的,所以cout<<*root<<endl;
给你一个分割错误,因为你不能取消引用空指针。
但除了解释之外,您不应该使用new
/delete
进行手动分配。C++不像Java或C#,一切都不是参考。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'