访问不属于您的进程的内存时会发生分段错误。使用此标记以及指示语言的标记和指示操作系统的标记。分段错误通常是使用指针变量(通常包含无效地址)或缓冲区溢出的解除引用操作的结果。无效指针值的根本原因可能是远离产生分段错误的位置。
我安装了OpenOnload来加速网络。我按照官方文档从源代码安装了 OpenOnload。 $ 加载 内核模块:8.1.1.17 找到 /lib/modules/`uname -r` -type f -na...
我查看了其他 StackOverflow 相关问题和答案,并遵循了给出的信息。我仍然遇到麻烦。 在 Linux 上运行 Python3,访问共享 C 库 (.so)。 C
我在输出中遇到问题,尽管我定义了 max long long 的宏来处理溢出,但它仍然给了我错误的输出 # 定义 LLONG_MAX 9223372036854775807LL 如你所见...
升级 Node 后,出现“分段错误(核心转储)”错误。我该如何解决它?
我尝试按照 https://tecadmin.net/upgrade-nodejs-via-npm/ 的说明升级 Node。我做了 sudo npm cache clean -f、sudo npm install -g n 和 sudo n stable。 经过以上
count_words.h #ifndef _count_words_h_ #定义_count_words_h_ #包括 #包括 #包括 类 CountWords { std::map 字数...
如何解决docker容器中“ffmpeg被信号SIGSEGV杀死”问题
我有一个 Node.js 应用程序部署到带有 fluence-ffmpeg、@ffmpeg-installer/ffmpeg 和 @ffprobe-installer/ffmprobe 的 docker 容器。 这是 fluence-ffmpeg 初始化脚本: 导入 ffmpeg = 请求...
在 std::vector 上调用 Push_back 时出现分段错误
下面我提供了我收到的错误的最小工作示例。在较高级别上,应用程序分段错误发生在我尝试将 Point 对象推回到 ve 的行...
我在 Windows 10 操作系统上使用 Git Bash。我使用的是 v18.18.0 node 版本和 9.8.1 npm 版本。该项目使用3.3.4版本在Vue.js框架中实现。对于
我有一个在AWS上运行的php系统和一个使用shh2和sftp在外部服务器上上传xlsx文件的类。 这段代码工作正常,直到上次升级 aws 软件包 openssh-clients-6.6.1p1-31.62...
linkedList.c: #包括 #包括 #包括 结构节点{ 整数数据; 结构节点*下一个; }; typedef 结构节点 *node; 节点 createNode(int va...
我的系统采用 Debian 12,配备 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz。 我正在尝试使用 openmp 并行化一些 fortran 代码,它使用 FFTW 库并由多个模块组成...
在我的第一篇文章下面为课堂进行实验室工作,因此如果格式不正确,我深表歉意。 当我运行调试模式时,它将一直工作到我输入整数的位置(a...
这是我的代码。 #包括 结构书 { 字符标题[30]; 字符作者[30]; 字符 isbn[30]; 浮动价格; }书籍[5]; int main() { int i=1,j=0; 同时(我<6) {...
为什么 Ruby 仅在我的系统上且仅在此 Rails 应用程序中抛出分段错误?
我不太确定如何正确调试这个问题,但尝试了几种不同的方法,这些方法消耗了时间,但没有解决问题。我办公室里至少还有另外 4 个人可以执行这个...
为什么我在这段代码中遇到了seg failure(分段错误)
int main(int argc, char *argv[]) { 字符文件名[50] = {}; 字符文件行[200] = {}; 字符 * 令牌 = NULL; 字符 * 分隔符 = " ”; 文件 *FH = NULL; //步骤 1e 到...
我使用的是OpenWrt提供的ubus消息服务。我用 C 语言编写了一个简单的 ubus 对象。该对象公开了一个不带任何参数的方法,并返回 &...
程序运行,但 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; }
我正在学习如何在 C 中构建链表。我的程序可以编译,但由于某种原因我无法弄清楚,我遇到了分段错误。我已经尝试找出问题一段时间了,...
为什么我在 AArch64 Linux hello world 程序中遇到分段错误?
我运行这个程序在汇编中打印“Hello World”,然后将其发送到Linux服务器。该程序编译正确,但当我尝试运行代码时出现分段错误......
在 Docker 中运行的 Node.JS 应用程序出现分段错误
我需要一些帮助来理解运行应用程序时遇到分段错误的原因。它通常发生在某种 API 调用期间。 我添加了段错误处理程序包...