C++ Glibc 检测到错误。双重自由或腐败
C++ Glibc Detected error. Double Free or corruption
谢谢,错误已修复。我真的很感激。删除代码以阻止我 class 中的其他人复制整个代码。
您的错误是 is_member() 中的未定义行为。
is_member() 无法初始化 vowel
布尔值。
因此,如果字符不是元音字母,则 vowel
布尔值未定义。它的后续用法包括未定义的行为。
我相当确定每个现代 C++ 编译器,如果它的所有诊断警告都打开,就会检测到这种未定义的行为并发出诊断。
除了识别出这个未定义的行为外,这段代码可能还有其他问题,我没有完全分析过。我建议您花一些时间学习如何使用调试器,例如 gdb
(因为您显然使用的是基于 glibc 的平台),以及静态分析工具,例如 valgrind
,它将帮助您查明这些类型的代码错误。
谢谢,错误已修复。我真的很感激。删除代码以阻止我 class 中的其他人复制整个代码。
您的错误是 is_member() 中的未定义行为。
is_member() 无法初始化 vowel
布尔值。
因此,如果字符不是元音字母,则 vowel
布尔值未定义。它的后续用法包括未定义的行为。
我相当确定每个现代 C++ 编译器,如果它的所有诊断警告都打开,就会检测到这种未定义的行为并发出诊断。
除了识别出这个未定义的行为外,这段代码可能还有其他问题,我没有完全分析过。我建议您花一些时间学习如何使用调试器,例如 gdb
(因为您显然使用的是基于 glibc 的平台),以及静态分析工具,例如 valgrind
,它将帮助您查明这些类型的代码错误。