Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::stoi导致SEGFULT_C++_Segmentation Fault_Buildroot - Fatal编程技术网

C++ std::stoi导致SEGFULT

C++ std::stoi导致SEGFULT,c++,segmentation-fault,buildroot,C++,Segmentation Fault,Buildroot,我有以下测试程序: #include <string> int main(int argc, char* argv[]) { try { return std::stoi("3000127232"); } catch (...) { return 0; } } #包括 int main(int argc,char*argv[]){ 试一试{ 返回标准::stoi(“3000127232”); } 捕获(…){ 返回0;

我有以下测试程序:

#include <string>
int main(int argc, char* argv[]) {
    try {
        return std::stoi("3000127232");
    }
    catch (...) {
        return 0;
    }
}
#包括
int main(int argc,char*argv[]){
试一试{
返回标准::stoi(“3000127232”);
}
捕获(…){
返回0;
}
}
当我用C++11在ubuntu上编译并运行代码时,我得到的返回值是0。这是我所期望的,因为字符串中的值超出范围

但是当我为rasperry buildroot 18.11编译它时,我可以在rasperry上运行这个程序,但是我得到了一个错误。我没想到会这样


是否有其他解决方案将字符串转换为整数(超出范围时不带segfaults),或者有人有其他想法吗?

std::stoi
指定在值超出范围时引发异常。如果实现没有做到这一点,那么它就不符合标准。这可能是一个编译器错误


例如,如果目标系统不支持异常或由于某些其他原因不一致,则有其他方法可以将字符串转换为不使用异常的整数,例如
std::strtol
std::stoi
指定在值超出范围时引发异常。如果实现没有做到这一点,那么它就不符合标准。这可能是一个编译器错误


例如,如果您的目标系统不支持异常或由于其他原因不一致,则有其他方法可以将字符串转换为不使用异常的整数,例如
std::strtol

您可能需要检查raspberry上int的大小,它可能超出范围。

您可能需要检查树莓上int的大小,它可能超出了范围。

你能调试你的程序并查看segfaults在哪里吗?你能在rasperry上获得segfaults,并带有一些范围内的值,如
0
?你能调试你的程序并查看segfaults在哪里吗?你能在rasperry上获得segfaults,并带有一些范围内的值,如
0
?Raspi在ARM上运行,所以它可能在ARM上运行32位intRaspi,所以它可能有32位int