【发布时间】:2013-08-01 12:06:10
【问题描述】:
请考虑以下情况:
我有一个头文件及其对应的源文件:
exmp.h(头文件)
exmp.cpp(源文件)
在头文件中我有一个函数声明bubSort(...),其定义存在于
exmp.cpp
myClass::bubSort(...)
{
....
....
}
其中,myClass-> 是 exmp.h
现在为了在另一个文件Sample.cpp中使用函数bubSort(...),我在Sample.h中声明了myClass,如下所示:
/*Sample.h*/
class myClass;
class sampleClass
{
.....
.....
myClass *ptr;
};
现在使用上面的ptr,我正在尝试访问Sample.cpp中的bubSort(...),如下所示:
//Sample.cpp
#include "exmp.h"
sampleClass::func(...)
{
....
....
ptr->bubSort(...);
}
上面的场景在编译过程中没有报错,但是在执行过程中,当控件到达ptr->bubSort(...);时,出现异常:
访问冲突读取位置0xcdcdcdcd
谁能告诉我如何避免这种情况?
提前致谢。
【问题讨论】:
-
你是如何初始化
ptr的? -
这可能意味着你没有让
ptr指向任何东西。或者它可能是别的东西。很难说,因为您没有发布太多相关代码。 -
值
0xcd通常被VC++用来标记未初始化的内存。 -
0xCDCDCDCD:被微软的 C++ 调试运行时库用来标记未初始化的堆内存。有关特殊内存指针值的完整列表,请参阅 stackoverflow.com/questions/127386/…。
标签: c++ visual-c++ exception