gpt4 book ai didi

c++ - try catch 无法处理 pthread 内的段错误

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

这里的 cdp 是一个包含一些 vector 的包。访问 vector 时会导致段错误。 ( vector 在其范围内访问,我仔细检查了它)。我计划用 try catch 处理这个异常,但它不起作用。

根据 gdb,以下行导致了问题。

int firing_crash=cdp->firing_data[0].size();

函数如下:

bool modified_simplex_solver::check_for_corrupt_cdp(converted_data_pack* cdp)
{
try{
int firing_crash=cdp->firing_data[0].size();
int not_firing_crash=cdp->not_firing_data[0].size();
return false;
}
catch(...)
{ return true;}
}

最佳答案

不使用 operator[](它不执行边界检查)并且如果 vector 在指定索引处没有元素将导致未定义的行为,您可以使用 at() 成员函数。

at( size_type pos );

这个函数:

  • Returns a reference to the element at specified location pos, with bounds checking.

  • If pos is not within the range of the container, an exception of type std::out_of_range is thrown.

由于 at() 抛出异常,您可以捕获它。

在你的案例中的用法是:

int firing_crash=cdp->firing_data.at(0).size();

关于c++ - try catch 无法处理 pthread 内的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54175788/

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