是什么原因导致了此内存访问错误(C++)?可能是未定义的行为
What could be causing this memory access error (C++)? Might be undefined behavior?
我正在处理一个相对较大的类,到目前为止一切都很好(注意:我实际上并没有写这个类,我只是添加了一些功能(。然而,在头文件中又声明了一个字符串之后,现在一切都崩溃了(我得到了一个内存访问错误(。如果我擦除那个字符串并重新构建,一切都会很好。
我实际上并没有用那根绳子做任何事情。。。。仅仅是声明它的行为就导致了一些奇怪的内存错误。
我不能再详细解释了,因为试图解释每一个函数都是浪费。我应该在这里找什么样的东西才能找到问题?是什么原因导致了这种奇怪的行为?
错误本身是:Unhandled exception at 0x65fd17fd (msvcp80d.dll) in myFile.exe: 0xC0000005: Access violation writing location 0xcdcdcdcd.
基本上,.h文件中所有更改都是:
StringType string1;
转换为:
StringType string1;
StringType string2;
StringType是basic_string 的扩展
您在堆上分配了一些内存,但未能初始化。
0xcd
是调试堆使用的填充模式:在将动态分配的内存提供给程序之前,它会填充该模式,以帮助您找到未初始化的变量。
至于为什么更改类定义会影响结果,您可能正在执行不正确的指针运算,访问动态分配对象末尾以外的内容,或者当您有一个更大的对象时,任何其他不再显示为错误的内容之一。如果某些源使用旧定义构建,而某些源使用新定义构建,则也可能违反一个定义规则。
有很多事情会导致这种问题:最好的办法是在发生错误时中断调试器,并向后跟踪以查看错误的来源(有时这会很有趣;我不得不通过网络连接跟踪一个未初始化的变量一次(。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 对 Scalar ::Scalar() 的未定义引用