segmentation-fault 相关问题

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

调试时出现段错误

#include #include #include 使用命名空间标准; vector topKFrequent(vector& nums, int k) { 矢量 #include<iostream> #include<vector> #include<unordered_map> using namespace std ; vector<int> topKFrequent(vector<int>& nums, int k) { vector<vector<int>> listCountFrequent(nums.size()); unordered_map<int,int> mapCountFrequent ; vector<int> results ; // Đếm tần suất for (int i = 0; i < nums.size(); i++) { if(mapCountFrequent.find(nums[i]) == mapCountFrequent.end()) mapCountFrequent.insert({nums[i],1}) ; else { ++mapCountFrequent[nums[i]] ; vector<int>::iterator delete_ = nums.begin() + i ; nums.erase(delete_) ; --i ; } } // Insert tần suất vào vector for (int i : nums) { int x = mapCountFrequent[(i)] ; listCountFrequent[x].push_back(i) ; } // Xuất ra for (int i = listCountFrequent.size() - 1; i >= 0; i--) { if(listCountFrequent[i].size() != 0) for (int j = listCountFrequent[i].size() - 1; j >= 0; j--) { results.push_back(listCountFrequent[i][j]) ; if( --k <= 0) break; } if( k <= 0) break; } return results ; } int main() { vector<int> nums = {1}; int k = 1; for (int i = 0; i < topKFrequent(nums,k).size(); i++) { cout << topKFrequent(nums,k)[i] << " " ; } } 想法是找到 nums 数组的频率,然后将其添加到结果向量中。 我上面有一个代码。当我在第26到30行调试程序时,错误是Segmentation fault。你们能帮我解决这个问题吗?谢谢大家<3 理解错误问题

回答 0 投票 0

为什么我在从链表中成功删除节点后出现分段错误?

我有一个链接列表,我试图将其变成一个动态存储其内容的“堆”。我以为我的 delete_node 函数工作正常但是当我尝试堆化

回答 1 投票 0

std::unordered_map 在 for 循环中修改时未正确更新

尝试使用以下代码片段将无序映射更新为只有小写字母,但它似乎在擦除一个键值对后停止 { [33 '!']: 3 } 并退出循环离开

回答 2 投票 0

PyCharm 无法从“/bin/zsh”加载环境

大约一个月前我写了一个程序,运行良好。从那以后我就没碰过它,直到今天。 突然,我在打开 Pycharm 时收到警告:“PyCharm 加载失败

回答 2 投票 0

c++ std::map operator [] [关闭]中的段错误

gdb 信息: #0 0x00007f53691c1a4a 在 ?? () 来自 /data/services/lib_glibc/lib/libc.so.6 #1 0x0000000000b59a3c in std::char_traits::compare (__n=, __s2= gdb 信息: #0 0x00007f53691c1a4a in ?? () from /data/services/lib_glibc/lib/libc.so.6 #1 0x0000000000b59a3c in std::char_traits<char>::compare (__n=<optimized out>, __s2=<optimized out>, __s1=<optimized out>) at /usr/include/c++/5/bits/char_traits.h:262 #2 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare (__str=..., this=0xc8ce080) at /usr/include/c++/5/bits/basic_string.h:2318 #3 std::operator< <char, std::char_traits<char>, std::allocator<char> > (__rhs=..., __lhs=...) at /usr/include/c++/5/bits/basic_string.h:4989 #4 std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator() (this=<optimized out>, __y=..., __x=...) at /usr/include/c++/5/bits/stl_function.h:387 #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_lower_bound (this=<optimized out>, __k=..., __y=0x7f5345b40310, __x=0xc8ce060) at /usr/include/c++/5/bits/stl_tree.h:1628 #6 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_tree.h:1091 #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__x=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:916 #8 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::operator[] (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:479 ... (gdb) f 8 #8 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::operator[] (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:479 479 iterator __i = lower_bound(__k); (gdb) i args __k = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} this = 0x7f5345b40308 (gdb) f 7 #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__x=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:916 916 { return _M_t.lower_bound(__x); } (gdb) i args __x = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} this = 0x7f5345b40308 (gdb) f 6 #6 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_tree.h:1091 1091 { return _M_lower_bound(_M_begin(), _M_end(), __k); } (gdb) i args __k = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} this = 0x7f5345b40308 (gdb) f 5 #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_lower_bound (this=<optimized out>, __k=..., __y=0x7f5345b40310, __x=0xc8ce060) at /usr/include/c++/5/bits/stl_tree.h:1628 1628 if (!_M_impl._M_key_compare(_S_key(__x), __k)) (gdb) i args this = <optimized out> __k = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} __y = 0x7f5345b40310 __x = 0xc8ce060 代码: for (; hIt != cntl->http_request().HeaderEnd(); hIt++) { this->_ctx._header[hIt->first] = hIt->second; } 这是构造函数的代码。 _ctx 是一个成员类,_header 是一个 std::map 成员变量。 hIt->first 和 hIt->second 返回有效的字符串变量。我通过打印 args 确认了这一点。 (用户的deviceid,敏感信息) 我检查了很多,但似乎没有什么是对的

回答 0 投票 0

在访问结构中的数据时查找段错误的原因

从另一个函数中访问下面的点结构中的任何内容时,我遇到了段错误。 Calculate_values(&s) 之前的 printf 按预期工作(连同其他行...

回答 2 投票 0

运行 .NET C# 可执行输出时出现分段错误,但不是 .dll

所以旨在制作一个 C# 程序,它的依赖项和一个可执行文件中的运行时。 这是一个 Linux 目标可执行文件。顺便一提。虽然只有 DLL 输出工作正常,但可执行文件...

回答 0 投票 0

C 中权重 [a]= 数据的段错误;

fscanf(ifile, "%c", &jnk); /* 如果有高度,这将是一个 "。如果没有,它将是一个 ,*/ 如果 ((jnk = '\"') || (jnk != ',')) { printf("%c", jnk); while(fscanf(ifile, "%c", &data) &...

回答 2 投票 0

How to solve this issue Segment fault (core dumped)?

我正在尝试在 linux 中编写 C 程序。这是代码: 在“shell>”提示符下输入我的输入后,gcc 给我以下错误: #包括 #包括 我正在尝试在 linux 中编写 C 程序。这是代码: 在“shell>”提示符下输入我的输入后,gcc 给我以下错误: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/shm.h> #include <sys/stat.h> #include <sys/mman.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> void main() { int shm_fd; char read_buff[1024]; void *ptr = NULL; shm_fd = shm_open("hello_class",O_RDONLY, 0666); ptr = mmap(0,4096, PROT_READ, MAP_SHARED, shm_fd,0); printf("%s", (char*)ptr); shm_unlink("hello_class"); } 对于初学者,您需要在打开共享内存对象之前创建它。 通过 if/perror 添加一些基本的错误检查到原始代码: shm_fd = shm_open("/hello_class",O_RDONLY, 0666); if (shm_fd < 0) { perror("shm_open");exit(1);} 会产生错误:(来自perror函数) shm_open: No such file or directory 创建共享内存区域; shm_fd = shm_open("/hello_class",O_CREAT, 0666); // create shared memory 现在您将能够打开/读取它(通常是另一个进程)。即: 进程1:检查/创建/写入数据 进程2:检查/创建/等待/读取数据 查看 svipc(7) 了解更多细节。特别是像信号量这样的同步机制。 但是,在这种情况下,正如鲍勃提到的那样,在向内存中写入有意义的内容之前,内存区域中不会有任何可用的东西。 注意:来自 shm_open(3) 联机帮助页,名称应以 / 开头

回答 1 投票 0

尝试初始化二维数组时出现分段错误

我不知道这里出了什么问题,当我尝试运行这段代码时出现段错误: #包括 int **alloc_grid(int 宽度, int 高度) { 诠释我,j; 诠释**网格; ...

回答 1 投票 0

使用位操作在字符串中查找重复项的问题

我认为,我已经实现了正确的逻辑来查找字符串是否包含重复项,但即使在那之后终端中也没有打印任何内容,我无法理解为什么会这样...

回答 2 投票 0

使用 strcat() 连接两个以上的字符串时出错

我正在尝试使用 for 循环使用 strcat() 将存储在数组中的多个字符串连接到一个已经存在的字符串。它抛出分段错误(核心已转储)。该怎么办? 有没有...

回答 1 投票 0

gfg 中的分段错误

有人能解释一下这个错误是什么以及如何解决吗? 我的代码: //函数在链表的开头插入一个节点。 结构节点 *insertAtBegining(结构节点 *head, int x) { ...

回答 0 投票 0

使用 `malloc` 在函数内定义一个数组并返回该数组给出分段错误

我正在尝试从 process.txt 获取输入。所以我做了一个函数来从那个文件中获取这些输入。 process.txt 文件的内容: 2个 3个 4个 c文件: #包括 #包括 我正在尝试从 process.txt 获取输入。所以我做了一个函数来从那个文件中获取这些输入。 process.txt文件的内容: 2 3 4 c文件: #include <stdio.h> #include <stdlib.h> int *takeInput(int *len) { FILE *fp = fopen("process.txt", "r"); fscanf(fp, "%d", len); int *arr = malloc(sizeof(int) * (*len)); for (int i = 0; i < (*len); i++) { fscanf(fp, "%d", &arr[i]); } /* for (int i = 0; i < (*len); i++) { */ /* printf("%d\n", arr[i]); */ /* } */ /* printf("%p\n", arr); */ fclose(fp); return arr; } int main() { int *len; int *arr = takeInput(len); printf("%d\n", *len); return 0; } 运行这个程序给了我Segmentation fault (core dumped)。 我无法在这里检测到错误。 fscanf(fp, "%d", len); 尝试访问不属于它的内存。 声明一个指针不会为指向的数据分配内存。使用自动存储持续时间声明的未初始化指针的内容是不确定的,即它可能指向内存中的任何内容,并且进程取消引用它是无效的。 这里不需要动态内存分配。只需声明一个具有自动存储持续时间的int: int len = 0; /* Or better as: */ size_t len = 0; /* It can't be negative. */ 并将它的地址传递给函数: int *arr = take_input (&len); 分段错误也可能源于读取 NULL 指针,因为 fopen() 的返回值未经检查就传递给了 fscanf()。 如果对fopen() 的调用返回失败,后续操作将读取/写入NULL 指针,这将调用未定义的行为。 if (!fopen ("process.txt", "r")) { perror ("fopen()"); complain (); } malloc() 也是,返回 NULL 表示失败。应该对其进行类似的检查。 关于 len 是使用它的值 len 还是它的地址 &len 存在一些混淆,这导致您将其定义为指针。您应该将 len 定义为类型为 int 的整数。并将其地址传递给fscanf(). 这里是修改版: #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int *takeInput(int *len) { FILE *fp = fopen("process.txt", "r"); if (fp == NULL) { fprintf(stderr, "cannot open %s: %s\n", "process.txt", strerror(errno)); return NULL; } if (fscanf(fp, "%d", len) != 1) { fprintf(stderr, "invalid length\n"); fclose(fp); return NULL; } int *arr = malloc(sizeof(*arr) * (*len)); if (arr == NULL) { fprintf(stderr, "cannot allocate array\n"); fclose(fp); return NULL; } for (int i = 0; i < (*len); i++) { if (fscanf(fp, "%d", &arr[i]) != 1) break; } fclose(fp); return arr; } int main(void) { int len; int *arr = takeInput(&len); if (arr != NULL) { printf("%d\n", len); for (int i = 0; i < len; i++) { printf("%d\n", arr[i]); } free(arr); } return 0; }

回答 2 投票 0

运行 ~24 小时后,Nginx 后面的 Flask/Python 应用程序出现 uWSGI 分段错误

问题 我有一个 Python/Flask 应用程序在产品中运行,在 Nginx 后面使用 uWSGI,它通过 Docker 部署我的个人项目。当它突然开始出现段错误时,它可以正常工作大约 12-24 小时。的...

回答 0 投票 0

在 C 中实现原始哈希函数时出现段错误

我正在尝试集成一个相当原始的“散列”功能。我知道它不是密码安全的,它只是为了学习...... 它编译但每次都会出现段错误... 我放第一个

回答 1 投票 0

[已解决]mkl blas 例程 sytrf 在 fortran 模块内部时给出多次调用的分段错误[关闭]

看起来mkl真的疯了,我根本无法确定问题的本质。 我正在使用 mkl 例程在 fortran 中实现我自己的 Lanczos 对角化算法 optimazin ...

回答 0 投票 0

Goroutine 导致 EKS Pod 中出现分段错误

func (l *LS) GetRCDetails(ctx *common.Context, rcRequest vm.RCRequest) (vm.RCResponseData, base.VError) { 推迟 common.StartSegment(ctx, "GetRCDetails").End() var rcResponse 虚拟机

回答 0 投票 0

mkl blas 例程 sytrf 在 fortran 模块内部时给出多次调用的分段错误

看起来mkl真的疯了,我根本无法确定问题的本质。 我正在使用 mkl 例程在 fortran 中实现我自己的 Lanczos 对角化算法 optimazin ...

回答 0 投票 0

“Segmentation fault(core dumped)”(argv 问题)

所以我尝试调试它,我知道它与 argv 有关,但我不确定发生了什么。 #包括 #包括 #包括 #包括 ...

回答 2 投票 0

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