segmentation-fault 相关问题

访问不属于您的进程的内存时会发生分段错误。使用此标记以及指示语言的标记和指示操作系统的标记。分段错误通常是使用指针变量(通常包含无效地址)或缓冲区溢出的解除引用操作的结果。无效指针值的根本原因可能是远离产生分段错误的位置。

当通过引用传递给函数时,整数数组似乎会自行释放

我正在尝试制作一个opengl程序。我制作了一些文件来抽象它的一些功能。这是我的代码: VAO_t vao[2]; // 第一个多边形 vaoGen(&vao[0]); vaoBind(&...

回答 1 投票 0

fread() 正在读取错误的数据,即使之前的块已正确读取

背景: 我正在尝试从 .goo 文件(Elegoo Mars 4 的 SLA 打印机文件格式)解析图层信息。 3D 模型的每一层都编码在存储在 goo_layer_definit 中的新二进制文件块中...

回答 1 投票 0

在Android设备中打开应用程序后,Kivy应用程序致命信号11(SIGSEGV),代码1(SEGV_MAPERR),tid 10919(SDLThread)中的故障地址0x40

致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 10919 (SDLThread) 中的故障地址 0x40,pid 10882 (org.test.myapp) 这是 logcat 的最后一行,我真的对发生的事情一无所知,因为......

回答 2 投票 0

快速排序分段错误

我用 C 实现了快速排序算法,并且在元素少于 30000 个的向量中正常工作。但是,它出现了分段错误 排队 if (vet[sup]>vet[sup/2+1]){交换(&vet[sup], &a...

回答 1 投票 0

Crypto++ ECDSA<ECP, SHA256>::PrivateKey::初始化造成分段错误

我有一个程序可以初始化 ECDSA 密钥对并存储它们。该程序有效,但现在,我在使用 Crypto++ 库初始化 ECDSA 私钥时出现分段错误。 这是

回答 1 投票 0

为什么这段代码会导致分段错误?

我有以下代码在 C++ 中打印向量。它适用于非空向量,但由于某种原因,当您尝试打印空向量时,它会出现分段错误。 #包括 我有以下代码来在 C++ 中打印向量。它适用于非空向量,但由于某种原因,当您尝试打印空向量时,它会出现分段错误。 #include <iostream> #include <vector> using namespace std; void printVector(const vector<int>& v) { cout << "{"; for (int i = 0; i < v.size() - 1; i++) cout << v[i] << ", "; if(v.size() > 0) cout << v[v.size() - 1]; cout << "}" << endl; } int main() { vector<int> v = vector<int>(0); printVector(v); } 对于空向量v,v.size() = 0,因此v.size() - 1 = -1,不> 0,因此永远不会进入循环。 if 条件也是如此。因此,唯一应该执行的两行是打印“{”和“}的行 ”. 相反,此代码输出准确(它甚至不打印第一个“{”): Segmentation fault (core dumped) 然后我尝试在代码中添加更多的计算,看看它在哪里中断。我做的第一个修改是 void printVector(const vector<int>& v) { cout << "{"; cout << "Check 1" << endl; for (int i = 0; i < v.size() - 1; i++) cout << v[i] << ", "; if(v.size() > 0) cout << v[v.size() - 1]; cout << "}" << endl; } 现在输出: {Check 1 Segmentation fault (core dumped) 这很奇怪,因为现在“{”确实出现了。我的下一个猜测是,.size() 函数可能会给出空向量的错误,因此 for 循环条件才是破坏的原因。为了测试它,我做了以下修改: void printVector(const vector<int>& v) { cout << "{"; int aux = v.size(); cout << "Check 1" << " " << aux << endl; for (int i = 0; i < v.size() - 1; i++) cout << v[i] << ", "; if(v.size() > 0) cout << v[v.size() - 1]; cout << "}" << endl; } 输出: {Check 1 0 Segmentation fault (core dumped) 我的结论是问题不可能出在 .size() 函数上,这是我对问题所在的最后猜测。然后我问聊天 gpt,它给了我这个代码: void printVector(vector<int>& v) { cout << "{"; for (int i = 0; i < v.size(); i++) { cout << v[i]; if (i < v.size() - 1) { cout << ", "; } } cout << "}" << endl; } 出于某种原因,这有效!对我来说,它看起来是完全相同的代码。我觉得我快要疯了。这是一个如此简单的程序,我什至无法让它工作/找到错误。 v.size() 是无符号。根据语言规则,无符号减去某个整数值的结果也是无符号的。 因此,当vector为空时,v.size()-1不是-1,而是它的无符号等价物,它(以2s补码表示)是一个大的正值(在典型的64位平台上它将是2^64-1)即 18,446,744,073,709,551,615)。 因此,您的 for 循环相当于: for (int i = 0; i < a_large_positive_integer; i++) 并且在第一次迭代中尝试访问 v[0],这是超出范围。 因此出现分段错误。 size() - 1 使用 无符号 整数,并且由于 size() 是 0,结果将回绕并成为可能的最大 size_t。 另一种方法是检查 vector 是否非空,然后打印第一个值,然后打印其余的值,前面加上 ,: void printVector(const std::vector<int>& v) { std::cout << '{'; if (!v.empty()) { auto it = v.begin(); std::cout << *it; for (++it; it != v.end(); ++it) { std::cout << ", " << *it; } } std::cout << "}\n"; }

回答 2 投票 0

如果使用数组,析构函数中会出现分段错误

清理向量时出现我无法理解的分段错误。删除数组访问(从底部第三行)可以消除崩溃,即使崩溃不在该行上。 代码...

回答 1 投票 0

霍夫曼代码在随机输入时出现段错误,但在文本输入时不会出现

(我在这里对霍夫曼代码的实现提出了多个问题,如果我问太多问题,请告诉我,我会停止。有关如何自己学习发现这些错误的任何提示是

回答 1 投票 0

在 c 中实现二叉树时出现分段错误

我是c语言新手,但对于一个项目,我正在实现一个二叉树。这是我的函数代码: #包括 #包括 #包括 typedef 结构 BST...

回答 1 投票 0

C++ 访问向量的向量出现分段错误

我创建了一个向量(10*10000)的向量,并尝试通过成员函数访问这个向量。但我遇到了分段错误。我不知道这里出了什么问题... 这是 Simple.h 简单类 { 优先...

回答 2 投票 0

检查评估地址是否会导致段错误而不导致 python 崩溃

我尝试过的: 错误处理程序对于获取发生段错误的回溯非常有用,但它不允许正确处理它。 导入故障处理程序 故障处理程序.enable() 导入ctypes 尝试: ...

回答 1 投票 0

尝试构建单个链接列表时,分段核心被转储

我正在学习C语言中的链接列表概念,因为我正在构建一个可以创建单个逆序列表的项目,我遇到了一次又一次转储的分段代码。请帮我找到我的电子...

回答 1 投票 0

在 Rust 中调用使用 dlopen() 获得的函数指针时出现段错误

我目前正在使用 Rust 使用 dlfcn.h 中定义的 POSIX 函数,目的是调用单独的 .so 文件中的函数。 该项目实际上包含 2 个 crate: 二进制文件加载

回答 1 投票 0

反转数组的代码中存在分段错误

#包括 使用命名空间 std; int main(){ 整数n,i,j; int arr[n]; 辛>>n; 对于 (j = 0; j < n; j++) { cin >> arr[j]; } for (i = n+1; i >=0; i--) { 算了...

回答 1 投票 0

C 内存访问错误分段故障 -

uint32_t binDataSize = 0; void *binData =Snapshot_Recovery(argc, argv, &binDataSize); snapshot_header *snapPtr = (snapshot_header *)malloc(binDataSize); printf("bindataSize 为 %u &quo...

回答 1 投票 0

C++ 程序的段错误

每当我尝试输入电影描述的名称或与字符串条目相关的任何其他内容时,它总是出现段错误。我可以输入电影的名称和类型。 #include“spla...

回答 1 投票 0

vscode 未运行并出现分段错误

刚刚将 vscode 1.23.1 更新为 1.27.2 我无法打开表单菜单,因此我尝试从终端显示分段错误。 /usr/bin/code:第 35 行:8228 分段错误(核心已转储)

回答 3 投票 0

令人困惑的回溯表明存在不符合预期的递归调用

我的程序很少发生崩溃,只有在触发STR时才会偶尔发生(STR是在QNX OS中暂停程序并恢复程序)。以下回溯令人困惑......

回答 1 投票 0

分段错误:当我尝试创建 cv::mat 时出现 Malloc 问题

我正在尝试创建一个 cv::Mat 来处理图像金字塔,源代码来自 ORBSLAM3,我添加了一些新内容,我得到这个输出,这是我的代码:(不是每次运行时都会出现错误...

回答 1 投票 0

如何解决这里的分段错误以及它出现在哪里?

我正在制作生命终端游戏,当滑翔机人物走出地图时,会出现段错误 11。你能告诉我这个段错误具体出现在哪里以及如何解决它吗? 我的 main.cpp 看起来像

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.