在Visual Studio中,我们都有"baadf00d",在运行时在C++中检查调试器中的变量时看到过"CC"和"CD".
根据我的理解,"CC"仅处于DEBUG模式,以指示内存何时是new()或alloc()并且是单元化的."CD"代表删除或免费内存.我在RELEASE版本中只看过"baadf00d"(但我可能错了).
偶尔会遇到内存泄漏,缓冲区溢出等问题,这些信息会派上用场.
是否有人能够指出何时以何种模式将内存设置为可识别的字节模式以进行调试?
请考虑以下情况:
我有一个头文件及其相应的源文件:
exmp.h(头文件)
exmp.cpp(源文件)
在头文件中,我有一个函数声明,bubSort(...)其定义存在于
exmp.cpp
myClass::bubSort(...)
{
....
....
}
Run Code Online (Sandbox Code Playgroud)
其中,myClass->是exmp.h中定义的类
现在为了bubSort(...)在另一个文件Sample.cpp中使用该函数,我myClass在Sample.h中声明了如下所示:
/*Sample.h*/
class myClass;
class sampleClass
{
.....
.....
myClass *ptr;
};
Run Code Online (Sandbox Code Playgroud)
现在使用上面的内容ptr,我正在尝试访问bubSort(...)Sample.cpp,如下所示:
//Sample.cpp
#include "exmp.h"
sampleClass::func(...)
{
....
....
ptr->bubSort(...);
}
Run Code Online (Sandbox Code Playgroud)
上面的场景在编译期间没有给出任何错误,但是在执行时,当控件到达时ptr->bubSort(...);,我得到一个异常:
访问冲突读取位置0xcdcdcdcd
有人会告诉我怎么能避免这种情况吗?
提前致谢.