segmentation-fault 相关问题

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

OpenOnlaod 抛出分段错误

我安装了OpenOnload来加速网络。我按照官方文档从源代码安装了 OpenOnload。 $ 加载 内核模块:8.1.1.17 找到 /lib/modules/`uname -r` -type f -na...

回答 1 投票 0

Python3:来自多线程 C 共享库的 c 型段错误

我查看了其他 StackOverflow 相关问题和答案,并遵循了给出的信息。我仍然遇到麻烦。 在 Linux 上运行 Python3,访问共享 C 库 (.so)。 C

回答 1 投票 0

重新创建atoi函数max long long error

我在输出中遇到问题,尽管我定义了 max long long 的宏来处理溢出,但它仍然给了我错误的输出 # 定义 LLONG_MAX 9223372036854775807LL 如你所见...

回答 1 投票 0

升级 Node 后,出现“分段错误(核心转储)”错误。我该如何解决它?

我尝试按照 https://tecadmin.net/upgrade-nodejs-via-npm/ 的说明升级 Node。我做了 sudo npm cache clean -f、sudo npm install -g n 和 sudo n stable。 经过以上

回答 5 投票 0

C++ 程序中的段错误

count_words.h #ifndef _count_words_h_ #定义_count_words_h_ #包括 #包括 #包括 类 CountWords { std::map 字数...

回答 1 投票 0

如何解决docker容器中“ffmpeg被信号SIGSEGV杀死”问题

我有一个 Node.js 应用程序部署到带有 fluence-ffmpeg、@ffmpeg-installer/ffmpeg 和 @ffprobe-installer/ffmprobe 的 docker 容器。 这是 fluence-ffmpeg 初始化脚本: 导入 ffmpeg = 请求...

回答 1 投票 0

在 std::vector 上调用 Push_back 时出现分段错误

下面我提供了我收到的错误的最小工作示例。在较高级别上,应用程序分段错误发生在我尝试将 Point 对象推回到 ve 的行...

回答 1 投票 0

使用 Vitest 运行单元测试用例期间出现分段错误

我在 Windows 10 操作系统上使用 Git Bash。我使用的是 v18.18.0 node 版本和 9.8.1 npm 版本。该项目使用3.3.4版本在Vue.js框架中实现。对于

回答 1 投票 0

使用 sftp 和 ssh2 的 fopen 出现分段错误

我有一个在AWS上运行的php系统和一个使用shh2和sftp在外部服务器上上传xlsx文件的类。 这段代码工作正常,直到上次升级 aws 软件包 openssh-clients-6.6.1p1-31.62...

回答 5 投票 0

我的代码适用于一种编译器,但不适用于其他编译器

linkedList.c: #包括 #包括 #包括 结构节点{ 整数数据; 结构节点*下一个; }; typedef 结构节点 *node; 节点 createNode(int va...

回答 1 投票 0

fortran 中的 Openmp“分段错误”[重复]

我的系统采用 Debian 12,配备 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz。 我正在尝试使用 openmp 并行化一些 fortran 代码,它使用 FFTW 库并由多个模块组成...

回答 1 投票 0

发生异常。分段错误

在我的第一篇文章下面为课堂进行实验室工作,因此如果格式不正确,我深表歉意。 当我运行调试模式时,它将一直工作到我输入整数的位置(a...

回答 1 投票 0

如何避免这种结构分段错误

这是我的代码。 #包括 结构书 { 字符标题[30]; 字符作者[30]; 字符 isbn[30]; 浮动价格; }书籍[5]; int main() { int i=1,j=0; 同时(我<6) {...

回答 1 投票 0

为什么 Ruby 仅在我的系统上且仅在此 Rails 应用程序中抛出分段错误?

我不太确定如何正确调试这个问题,但尝试了几种不同的方法,这些方法消耗了时间,但没有解决问题。我办公室里至少还有另外 4 个人可以执行这个...

回答 6 投票 0

为什么我在这段代码中遇到了seg failure(分段错误)

int main(int argc, char *argv[]) { 字符文件名[50] = {}; 字符文件行[200] = {}; 字符 * 令牌 = NULL; 字符 * 分隔符 = " ”; 文件 *FH = NULL; //步骤 1e 到...

回答 1 投票 0

uBus 程序中的分段错误

我使用的是OpenWrt提供的ubus消息服务。我用 C 语言编写了一个简单的 ubus 对象。该对象公开了一个不带任何参数的方法,并返回 &...

回答 1 投票 0

程序运行,但 Valgrind 在尝试写入 malloc 内存时检测到问题

为了了解更多 C 语言,我正在尝试重新创建基本数据结构。这是我尝试数组的一个最小示例,该数组可以编译并运行,但 valgrind 检测到问题: #包括 为了了解更多 C 语言,我正在尝试重新创建基本数据结构。这是我尝试数组的一个最小示例,该数组可以编译并运行,但 valgrind 检测到问题: #include <stdlib.h> #include <stdio.h> typedef void * vp_t; typedef struct { int len; vp_t *start; } arr_t; arr_t * array_new(int len) { arr_t *arr = malloc(sizeof(arr_t)); arr->start = malloc(len * sizeof(vp_t)); arr->len = len; return arr; } void array_set(arr_t *arr, int i, vp_t vp) { vp_t *dest = arr->start + i * sizeof(vp_t); *dest = vp; } int array_get(arr_t *arr, int i) { int *p = *(arr->start + i * sizeof(vp_t)); return *p; } void array_delete(arr_t *arr) { free(arr->start); free(arr); } int main() { int x=0, y=1, z=2; arr_t *arr = array_new(3); array_set(arr, 0, &x); array_set(arr, 1, &y); array_set(arr, 2, &z); for (int i = 0; i < 3; ++i) printf("%i ", array_get(arr, i)); putchar('\n'); array_delete(arr); return 0; } 程序按预期输出 1 2 3。然而,当我第二次和第三次调用 array_set 函数时,valgrind 检测到了一个问题。针对此处的示例代码运行 valgrind,我得到: ==91933== Invalid write of size 8 ==91933== at 0x109244: array_set (min.c:22) ==91933== by 0x109312: main (min.c:39) ==91933== Address 0x4a990d0 is 32 bytes before an unallocated block of size 4,194,032 in arena "client" ==91933== ==91933== ==91933== Process terminating with default action of signal 11 (SIGSEGV) ==91933== Access not within mapped region at address 0x2003A98F4C ==91933== at 0x109244: array_set (min.c:22) ==91933== by 0x109327: main (min.c:40) min.c:22指的是array_set函数中的*dest = vp。 min.c:39指的是array_set(arr, 1, &y)。 Valgrind 不抱怨第 38 行,array_set(arr, 0, &x)。 我一直在研究gdb,但我还没弄清楚。感谢您的浏览。 当您需要寻址数组时,只需将多少个单元格(除了单元格大小)添加到指针即可。 void array_set(arr_t *arr, int i, vp_t vp) { vp_t *dest = arr->start + i; *dest = vp; } int array_get(arr_t *arr, int i) { int *p = *(arr->start + i); return *p; } arr->start 的类型为 vp_t,因此当您向指针添加 1 时,编译器将增加所需的数量 (sizeof(vp_t)) 以转到下一个单元格。 这就是解决方案,但首先为什么,你需要一个 void ** 数组,如果你想创建一个整数数组,请使用 int** 创建,只有当你需要任何类型的数组时才推荐使用 void 数组。 不管怎样,错误在于你创建了一个 void* (一维),而实际上,应该是一个二维数组 void ** #include <stdlib.h> #include <stdio.h> typedef struct { int len; void **start; } arr_t; arr_t * array_new(int len) { arr_t *arr = malloc(sizeof(arr_t)); arr->start = malloc(len * sizeof(void*)); arr->len = len; return arr; } void array_set(arr_t *arr, int i, void *vp) { arr->start[i] = vp; } int array_get(arr_t *arr, int i) { return *(int*)arr->start[i]; } void array_delete(arr_t *arr) { free(arr->start); free(arr); } int main() { int x=0, y=1, z=2; arr_t *arr = array_new(3); array_set(arr, 0, &x); array_set(arr, 1, &y); array_set(arr, 2, &z); for (int i = 0; i < 3; ++i) printf("%i ", array_get(arr, i)); putchar('\n'); array_delete(arr); return 0; }

回答 2 投票 0

分段错误 - 链表

我正在学习如何在 C 中构建链表。我的程序可以编译,但由于某种原因我无法弄清楚,我遇到了分段错误。我已经尝试找出问题一段时间了,...

回答 5 投票 0

为什么我在 AArch64 Linux hello world 程序中遇到分段错误?

我运行这个程序在汇编中打印“Hello World”,然后将其发送到Linux服务器。该程序编译正确,但当我尝试运行代码时出现分段错误......

回答 1 投票 0

在 Docker 中运行的 Node.JS 应用程序出现分段错误

我需要一些帮助来理解运行应用程序时遇到分段错误的原因。它通常发生在某种 API 调用期间。 我添加了段错误处理程序包...

回答 1 投票 0

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