读书人

一个关于内存的异常: ( 求解

发布时间: 2012-02-13 17:20:26 作者: rapoo

一个关于内存的错误: ( 求解!
编译M.exe没有问题

但是双击M.exe后出现如下错误:

The instruction at "0x6001bed " referenced memory at "0x00000000 ". The memory could not be "written ".

然后click ok to terminate, click cancel to debug

程序无法正常运行,请问是什么原因呢?

以下是代码:(改代码之前还是好的,改过之后就不行了)
#define TEST_ENDING() \
} \
\
static CPPUNIT_NS::TestSuite *suite() \
{ \
const CPPUNIT_NS::TestNamer &namer = getTestNamer__(); \
std::auto_ptr <CPPUNIT_NS::TestSuite> suite( \
new CPPUNIT_NS::TestSuite( namer.getFixtureName() )); \


return suite.release(); \
} \
CPPUNIT_NS::Test * pSuite=new CPPUNIT_NS::Test; \ // 这两行是后来加上去的
pSuite-> suitePrint=suite_printTests; \ // 这两行是后来加上去的

// 原始目的就是想新建一个Test类的指针,使得在Test类中定义的函数指针suitePrint指向
suite_printTests这个函数(此函数另外有定义)

请问基于我的原始目的,怎么解决这个问题?

[解决办法]
程序员对错误原因的猜测,基本准确性都很差。
我不太相信你猜对了。
if (pSuite)
{
pSuite-> suitePrint=suite_printTests;
}
就知道你猜对没有了。
还是老老实实上调试器吧。
[解决办法]
指针用时要注意:
1.new/malloc 是否成功
2.使用时是否为空
3.free/delete后置NULL
4.是否会越界
5.字符串Null-Terminated
等等

读书人网 >C++

热点推荐