社区
C++ 语言
帖子详情
linux vector push_back 出现段错误!
喵了个咪78
2014-12-24 01:54:15
具体问题是这样的:
本人将windows上的代码移植到linux上,但是遇到vector push_back 的时候出问题 ,vector里面装的指针,指针的类型是自定义的类 ,实际push_back 的时候是将自定义类的子类push进去!但是会出问题,还请各位有经验的大神们给指点指点!
HELP HELP
...全文
742
5
打赏
收藏
linux vector push_back 出现段错误!
具体问题是这样的: 本人将windows上的代码移植到linux上,但是遇到vector push_back 的时候出问题 ,vector里面装的指针,指针的类型是自定义的类 ,实际push_back 的时候是将自定义类的子类push进去!但是会出问题,还请各位有经验的大神们给指点指点! HELP HELP
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangyunzhao
2014-12-25
打赏
举报
回复
1、贴代码,能不能先格式化一下啊,csdn有这个功能的,不然看着眼花。 2、既然都是移植到linux,能不能不用BOOL,看着好奇怪。 3、代码没有看出问题,你确定是push_back出的问题?用gdb跟踪一下呢,或者看看core文件。push_back一个指针,怎么会有问题,奇怪
赵4老师
2014-12-24
打赏
举报
回复
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’ 使用命令 gdb 运行程序名 core或core.数字 进入gdb然后使用bt命令 可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。 如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令
喵了个咪78
2014-12-24
打赏
举报
回复
1.下面的是一个中间的类的声明clss COCRComposite class COCRComposite : public COCRNode { public: COCRComposite(); virtual ~COCRComposite(); int GetSize(); virtual COCRNode* GetFirstChild(); virtual COCRNode* GetLastChild(); virtual BOOL DrawImage(CDC *pDC, double fScale); virtual BOOL Add(COCRNode * pNode); virtual BOOL Insert(COCRNode * pNode, int nPos); virtual BOOL RemoveAllElements(); virtual BOOL RemoveElement(int nPos); virtual BOOL RemoveElements(int nBeg, int nEnd);
vector<COCRNode*> m_Elements;
virtual void CloneElements(COCRNode* pDestNode); virtual void Accept(CNodeVisitor* pVisitor); COCRNode* GetNodeByPos(int nPos); protected: friend COCREngine; friend CEngineTHOCR; }; 2.接下来是虚函数virtual BOOL Add(COCRNode * pNode)的实现 BOOL COCRComposite::Add(COCRNode * pNode) { if(pNode == NULL) return FALSE; pNode->SetParent(this); m_Elements.push_back(pNode); return TRUE; } 3. 接下来是两个子类class COCRNodeText : public COCRComposite、class COCRNodeRow : public COCRComposite 主要是说明几个类之间的关系 4、下面的调用部分 COCRNodeText* pText = static_cast<COCRNodeText*>(lpUserParam); COCRNodeRow* pRow = dynamic_cast<COCRNodeRow*>(pFactory->CreateNode(COCRNode::NODETYPE_ROW)); pText->Add(pRow); 问题出在 pText->Add(pRow)里面的 m_Elements.push_back(pNode) 这,找了很多资料,但是没有搞明白具体是什么原因,还麻烦帮忙看看! 谢谢
ayrb13
2014-12-24
打赏
举报
回复
talk is cheap,show me the code
ri_aje
2014-12-24
打赏
举报
回复
代码..............
Java集合框架精讲
该课程内容包括:Collection集合的继承体系、Map集合的集合体系、部分数据结构知识点、List、Set、ArrayList、
Vector
、LinkedList、Iterator(迭代器)、TreeSet、HashSet、LinkedHashSet、TreeSet、Map、TreeMap、...
vector
push
_back报错 是其他地方内存越界覆盖掉了后面的内存
最近在运行一个较大的程序,内存占用可能有点多,其中在
vector
.
push
_back()处报错,感到很奇怪。用g++ -std=c++11编译。 下面是与报错相关的部分。
vector
KATT; KATT.clear(); int KATT2; ...... ...... ...... KATT.
push
_back(KATT2); 程序输出及报错信息: KATT2 =
vector
push
_back操作报segmentation fault(core dump)
长话短说 如果具备以下属性 本来没事突发bug+没有明显错误+
vector
简单操作出问题+换机器跑没问题 试试重启把,我成了 问题 昨天敲代码,程序突然报segmentation fault,core dump 最后一步一步采取cout方法定位到错误(因为程序本身编写特点,不方便用gdb调试定位 源头是,因为不确定
vector
大小,所以采取先声明,后
push
_back的操作 换电脑跑程序没问题,找了很久资料也没个解决办法 最后决定重启 ...
使用指针管理
vector
无法
push
_back
使用指针管理
vector
无法
push
_back
vector
push
_back数量大的时候变慢
才用15000个数据
push
_back耗时就好几秒, 解决方法是 先resize 15000, 然后再 for (int i = 0; i < 15000; i++) { Data data; m_dataVect[i] = data; } 没详细用时间戳试过减少多少时间,感觉可以节省5~10倍的时间。从4秒左右变为不到1秒。 这种就有点危险,自己要控...
C++ 语言
64,645
社区成员
250,475
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章