主题:[讨论]求助:提示“该内存不能为"written"”的解决方法
ballfly
[专家分:0] 发布于 2006-12-30 13:42:00
我用VC2003和vc2005分别都编译同一个粒子程序的,都会出现如下提示:
“0x00404143”指令引用的“0xccccccd0”内存。该内存不能为“written”。
这个问题困扰了我好久了,VC都重装过了,很多其它的程序都被我删除后,问题还是不能解决,请问各位高手如何解决啊?
回复列表 (共5个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2006-12-30 18:17:00
指针指向了非法地址吧?
板凳
小小C [专家分:4570] 发布于 2006-12-30 20:17:00
const变量只读不可写,你的程序中有可能写了只读的静态变量!
3 楼
silverfox715 [专家分:3130] 发布于 2006-12-30 23:07:00
他是因为一个变量没有初始化而造成的,而且很可能是一个指针类型并对其进行了++操作。因为VC编译器在DEBUG模式下允许中断,而由于中断导致分配的指针类型初始值为0xcccccccc
PS:在定义每个变量的时候进行它的初始化并使用ASSERTION是一个很好的习惯,希望楼主早日找到原因。
4 楼
ballfly [专家分:0] 发布于 2006-12-31 09:24:00
谢谢楼上各位的回复,但我的程序在其它机子上运行都正常,就是拿到我的机子上就出问题,何解?
5 楼
silverfox715 [专家分:3130] 发布于 2006-12-31 18:56:00
每个机器都有自己的一套驱动程序,而只要保证对外的接口是一致的就可以。我根据你所说的情况可以判断出一定是未初始化的原因,因为被删除了的地址是0xfeeefeee,这个是由80x86的CPU所确定的。至于其它机器上运行正常,第一要看你在别人机器上是不是使用的RELEASE,如果是,那恭喜他们,他们的一些内核有可能被破坏了,当然,最可能的是没有这个内存地址,被ignore了。你的程序在本地调试时候使用的是DEBUG版本,所以会报错。
我来回复