如何解决向量::大小和分段错误
| 为什么此代码会引发分段错误?:/listeners = new vector<Listener*> ();
... /* other code */
if (listeners != NULL) {
int i = listeners->size();
}
解决方法
仅仅因为指针不是
NULL
并不意味着它指向有效的vector<Listener*>
对象。
通过valgrind运行程序以检测内存损坏问题,并确保也通过调试器运行代码。
如果仍然有问题,请发布一个重现该问题的测试(而不是一些没有问题的代码段)。
,与使用valgrind相比,更简单的方法是在分配之后立即移动listeners->size()
调用,并查看它是否在此之前仍存在段错误。如果否,则将其降低几行代码,然后重试,然后重复。如果出现段错误,您只需找到导致它的行。也许您一直在使用指针做一些事情,这是一种查找这段代码的方法。
查看二分法。
可能并不总是有效,而是一种启发式方法。
,vector<Listener*> listeners;
可能会为您节省一些问题或使代码中断的原因更明显
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。