回 帖 发 新 帖 刷新版面

主题:[讨论]求助:提示“该内存不能为"written"”的解决方法

我用VC2003和vc2005分别都编译同一个粒子程序的,都会出现如下提示:
“0x00404143”指令引用的“0xccccccd0”内存。该内存不能为“written”。
这个问题困扰了我好久了,VC都重装过了,很多其它的程序都被我删除后,问题还是不能解决,请问各位高手如何解决啊?

回复列表 (共5个回复)

沙发

指针指向了非法地址吧?

板凳

const变量只读不可写,你的程序中有可能写了只读的静态变量!

3 楼

他是因为一个变量没有初始化而造成的,而且很可能是一个指针类型并对其进行了++操作。因为VC编译器在DEBUG模式下允许中断,而由于中断导致分配的指针类型初始值为0xcccccccc
PS:在定义每个变量的时候进行它的初始化并使用ASSERTION是一个很好的习惯,希望楼主早日找到原因。

4 楼

谢谢楼上各位的回复,但我的程序在其它机子上运行都正常,就是拿到我的机子上就出问题,何解?

5 楼

每个机器都有自己的一套驱动程序,而只要保证对外的接口是一致的就可以。我根据你所说的情况可以判断出一定是未初始化的原因,因为被删除了的地址是0xfeeefeee,这个是由80x86的CPU所确定的。至于其它机器上运行正常,第一要看你在别人机器上是不是使用的RELEASE,如果是,那恭喜他们,他们的一些内核有可能被破坏了,当然,最可能的是没有这个内存地址,被ignore了。你的程序在本地调试时候使用的是DEBUG版本,所以会报错。

我来回复

您尚未登录,请登录后再回复。点此登录或注册