C 分割故障由调试器糟糕检测
C++ segmentation fault badly detected by debugger
以下是我的C 程序的开始。对我来说看起来很正常,但是当我运行时,我会出现细分故障。这就是调试器给我的:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004008d4 in main () at usu.cpp:12
12 cin >> n >> k;
但是,当我在循环程序正常结束之前将" reutrn 1"放置时,错误没有与此代码线连接。怎么了?我使用:G -GGDB3
编译程序#include <iostream>
#include <stdio.h>
#define MAX_N 1000000
#define MAX_K 1000000
#define MAX_IL_KROKOW 500000
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
char klocki[MAX_N+1];
int Przes_C[MAX_IL_KROKOW];//podaje następne c po c znajdującym się na pozycji i
int Ktore_b[MAX_N];//na podstawie indeksu b w klockach zwraca indeks w tablicy Przes_b
int Przes_b[MAX_N];//zwraca indeks b w klockach na podstawie występowania b
int poprz_c = -1;
int ilosc_b = 0;
int klocki_len = 0;
for(int i=0;i<n;i++)
{
klocki[i] = getchar();
return 1;
if(klocki[i] == 'b')
{
Przes_b[ilosc_b] = i;
Ktore_b[i] = ilosc_b;
ilosc_b++;
}
if(poprz_c != -1 && klocki[i] == 'c')
Przes_C[poprz_c] = i;
if(klocki[i] == 'c')
poprz_c = i;
klocki_len++;
}
klocki[klocki_len] = ' ';
可能是youur数组分配失败,这会导致不确定的行为,当您尝试将某些内容写入数组时。
char klocki[MAX_N+1];
int Przes_C[MAX_IL_KROKOW];
int Ktore_b[MAX_N];
int Przes_b[MAX_N];
这些是巨大的阵列。每个过程只有固定尺寸分配的堆栈。使用new
。
您还可以将数组变量定义为主函数之外的全局变量。取决于您的程序(长度)是否有意义。
相关文章:
- 正在VS调试器中监视映射条目
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 带有 GDB 调试器的 VS 代码内存视图
- 为什么调试器引发"read access violation. this was nullptr"异常?
- VS2017调试器:没有地址,可能是由于编译器优化
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 为什么我的程序无法在GDB在线编译器/调试器或Visual Studio C++ 2019中运行
- Popen使Qt调试器崩溃
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 宏使枚举调试器感知?
- Eclipse-C++-调试器立即终止
- 标识gdb调试器中符号的源文件名
- Visual Studio图形调试器引发读取访问冲突异常
- C 分割故障由调试器糟糕检测
- 如何检测c++中是否附加了调试器
- 使用调试器检测可执行文件中的运行时更改