【发布时间】:2011-10-03 03:49:55
【问题描述】:
所以我有一个非常基本的类,它有一些方法和一些类变量。一切都很好,直到我在头文件中的成员变量中添加了一个向量:
std::vector <std::string> vectorofstuff;
如果我所做的只是添加这一行,那么我的程序可以完美运行,但最后,在所有输出都存在之后,我会收到一条关于 seg 错误的消息。
我的第一个猜测是我需要调用向量上的析构函数,但这似乎不起作用。另外,我的理解是我不需要调用析构函数,除非我使用“新”这个词。
朝着正确的方向推进了吗?谢谢大家!
【问题讨论】:
-
请发布您的实际代码。声明向量不是问题。您也许可以使用 valgrind.org/">valgrind</a> 解决此问题(如果您在支持它的平台上)。
-
你永远不需要自己调用析构函数,我的意思是从不,除非你做了一个叫做“in-place new”的东西,我可以保证你没有。显然这一行没有任何问题,您需要共享更多代码。发布重现此问题的 非常少 数量的代码。
-
您真正的问题可能不是向量,因为您没有更改
std::string或std::vector类,而是另一个问题在您使包含sumofurls的类更大之前被掩盖了。尝试在调试器中运行程序并查看出现段错误的位置,记住该问题实际上可能是由早期的内存损坏引起的。 -
对不起,我忘了你必须发布这样的链接:valgrind
-
@InBetween:你的 makefile 可能已经损坏(检查每个编译单元的依赖关系...)
标签: c++ vector segmentation-fault