C++ 函数在调用时崩溃(类构造函数)

标签 c++ function gdb crash kdevelop

[修改] 我有一个非常奇怪的错误。我的调试器过去常常在调用使用 std::string 的函数时崩溃。 我认为这是我的代码中的一个错误,起初我没有意识到,它必须对 std::strings 做些什么。无论如何,我现在知道它必须对 KDevelop 做一些事情,因为如果我编译这个小测试文件:

#include <iostream>
#include <vector>
#include <string>

int main(int argc, char **argv) {
    std::cout << "Hello, world!" << std::endl;

    std::string test = "test test";
    std::cout << test;
    return 0;
}

它打印“测试测试”,但是当我尝试调试它时,它也在调用 main() 时崩溃。 无论如何,我可以使用 nemivar 调试我的项目,nemivar 也使用 GDB 作为后端,没有错误。

所以这对我来说不再是问题,可以删除。

最佳答案

在您的 search_str_in_vector() 函数中,您取消引用了 end() 迭代器,这是不允许的并导致未定义的行为。您的 for 循环也比 vector 大一个元素(改为从 vector.size()-1 开始)。

关于C++ 函数在调用时崩溃(类构造函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803896/

相关文章:

c++ - 从方法中获取指向常量的指针作为指向指针的指针

c++ - 在 C++ 中创建对象的动态数组、删除对象和释放内存

c++ - 如何使用函数原型(prototype)返回多个参数

c - 此代码有什么问题?每次显示错误的输出

c - 释放内存时如何在 gdb 中得到通知?

process - 如何知道哪个进程(stat : T) is attached by gdb?

emacs - GDB 与 emacs 技巧

c++ - 试图理解宏定义

c++ - `print` 具有两个不同构造函数的对象的函数

javascript - 新的 jQuery 函数应该放在 jQuery 命名空间中吗?