C++ 代码块在执行代码时给出以下错误(偶校验汉明码)

C++ 代码块在执行代码时给出以下错误(偶校验汉明码),c++,codeblocks,C++,Codeblocks,这是它在构建日志中显示的内容: 正在检查是否存在:C:\CodeBlocks\hammingcodeven.exe 正在执行:“'C:\CodeBlocks/cb_console_runner.exe”“C:\CodeBlocks\hammingcodeven.exe”“”(在'C:\CodeBlocks'中) 设置变量:PATH=C:\MinGW\bin;C:\MinGW;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Wi

这是它在构建日志中显示的内容:

正在检查是否存在:C:\CodeBlocks\hammingcodeven.exe 正在执行:“'C:\CodeBlocks/cb_console_runner.exe”“C:\CodeBlocks\hammingcodeven.exe”“”(在'C:\CodeBlocks'中) 设置变量:PATH=C:\MinGW\bin;C:\MinGW;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files(x86)\Intel\Intel(R)管理引擎组件\DAL;C:\Program Files\Intel\Intel(R)管理引擎组件\DAL;C:\Users\mahek\AppData\Local\Microsoft\WindowsApps 进程终止,状态为-1073741510(0分钟,54秒))

这是在使用偶校验汉明码后查找m位码二进制值的代码

#包括
#包括
使用名称空间std;
类数据
{
INTA[50],m,r,ps[6],B[6][56],最终[56];
公众:
void show();
无效输入();
void findr();
void findps();
void binary();
void findfinal();
};
void data::input()
{
coutm;

cout在函数
binary()的第一个循环中
,变量i可以高达
m+r
。在您的示例中,m是8,因此
m+r
至少是9。但是,i用于索引B的第一个维度,其大小为6。访问其定义大小之外的B会导致读取/写入堆栈上的其他内存,从而导致未定义的行为。为了帮助解决此问题,您可以动态地分配所需大小的字段。我还强烈建议为字段指定有意义的名称,以帮助人们理解您的代码试图做什么


此外,您对数组的索引不正确。在C++和许多其他语言中,数组是零索引的,这意味着数组n的第一个值的大小n是在[0 ],最后一个值是[n-1 ]。.

是否尝试调试?尝试创建一个,因为这将有助于集中调试工作。查看可以在不消除崩溃的情况下从代码中消除哪些内容。此外,还可以使用硬代码值,而不依赖用户输入。