gpt4 book ai didi

c++ - gnu slist 执行错误 : lost of file . ../bits/allocator.h: 没有那个文件

转载 作者:行者123 更新时间:2023-11-30 04:22:25 25 4
gpt4 key购买 nike

我正在使用 Ubuntu。 g++ 版本 4.7.2。

任何人都可以帮我处理 gnu-extension 单列表吗?我在这里编译了这些东西,并在执行时得到了一个核心转储。

我调试了它,看到核心转储发生在第一行,它抛出了一个我无法解决的错误。有人可以帮我吗??

错误代码:

std::allocator<char>::allocator (this=0x7fffffffe4d0)
at /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h:104
104 /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h: No such file or directory.

这是我的测试代码:

#include <ext/slist>
#include <cstring>
#include <iostream>

int main(int argc, char * argv[])
{
__gnu_cxx::slist<char> li(&argv[1][0], &(argv[1][strlen(argv[1])]));

if(argc != 3)
return 1;

std::cout << "SList: ";
for(__gnu_cxx::slist<char>::iterator i = li.begin();
i != li.end();
++i)
std::cout << *i;
std::cout << std::endl;

li.remove(argv[2][0]);

for(__gnu_cxx::slist<char>::iterator i = li.begin();
i != li.end();
++i)
std::cout << *i;
std::cout << std::endl;

return 0;
}//main

最佳答案

我的猜测是您在运行它时没有提供任何命令行参数。它需要两个:要放入列表的字符序列和要删除的字符序列。

更新:如评论中所述,在使用 gdb 时将参数传递给您的程序, 你需要使用 --args指示程序名称后面的参数应传递给程序的选项,而不是 gdb本身:

gdb --args a.out xxyyxx x
^^^^^^

它从第一个参数初始化列表 argv[1] 之前 检查该参数是否存在;如果没有,那么您将得到未定义的行为。如果将支票移到 li 的声明上方,那么在这种情况下程序应该退出并返回代码 1。

然后调试器提示找不到源文件,因此无法向您显示在哪一行源代码中出错。

顺便说一下,C++ 标准库现在包含一个单向链表,std::forward_list , 在 <forward_list> 中定义,您可以使用它来代替 GNU 的扩展。

关于c++ - gnu slist 执行错误 : lost of file . ../bits/allocator.h: 没有那个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com