一个关于内存的错误: ( 求解!

blackpool 2007-07-11 03:07:11
编译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这个函数(此函数另外有定义)

请问基于我的原始目的,怎么解决这个问题?
...全文
337 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longtrue 2007-07-14
  • 打赏
  • 举报
回复
CPPUNIT_NS::Test * pSuite=new CPPUNIT_NS::Test; \ // 这两行是后来加上去的
===================
应该是这里吧,虽然说通常都能分配到内存,但对分配后内存的检查应该要进行,增强健壮性。taodm正解。
MPTD_Fire 2007-07-14
  • 打赏
  • 举报
回复
指针错误
飞哥 2007-07-12
  • 打赏
  • 举报
回复
指针用时要注意:
1.new/malloc 是否成功
2.使用时是否为空
3.free/delete后置NULL
4.是否会越界
5.字符串Null-Terminated
等等
KenYuan2016 2007-07-12
  • 打赏
  • 举报
回复
pSuite->suitePrint=suite_printTests; 后面是什么 前面又是什么。。
lfh19811106 2007-07-12
  • 打赏
  • 举报
回复
应该是内存空间你分配的不够,我也遇到过这样的问题,自己再看看你程序里内存分配情况。
gunsand 2007-07-12
  • 打赏
  • 举报
回复
pSuite 应该可以NEW 到 没理由分配不到. 通常的情况下。
taodm 2007-07-11
  • 打赏
  • 举报
回复
程序员对错误原因的猜测,基本准确性都很差。
我不太相信你猜对了。
if (pSuite)
{
pSuite->suitePrint=suite_printTests;
}
就知道你猜对没有了。
还是老老实实上调试器吧。
blackpool 2007-07-11
  • 打赏
  • 举报
回复
CPPUNIT_NS::Test * pSuite=new CPPUNIT_NS::Test; \ // 这两行是后来加上去的
pSuite->suitePrint=suite_printTests; \ // 这两行是后来加上去的

只加了这两行,应该是 pSuite 是空指针吧,那要怎么改呢~~~

郁闷ing
taodm 2007-07-11
  • 打赏
  • 举报
回复
空指针操作。你只有加断点,精确定位出代码,才能改错。
blackpool 2007-07-11
  • 打赏
  • 举报
回复
有没有人解答下子~~~~~~~~~~~~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧