指针问题~0xcdcdcdcd是不是空?

plxmbh 2003-10-09 02:06:10
给一个指针初始化,在单步调试时看到它的值是0xcdcdcdcd。
而看它具体内容时,里面都是CXX0030:Error:……之类的错误信息
后面使用到这个指针时,会出现运行错误
0xcdcdcdcd这个值到底是什么啊?
...全文
2338 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkhuang 2003-10-17
  • 打赏
  • 举报
回复
你看到你是地址!地址内容你看看是不是你要的哦!如果是乱七八造10有89是野指针!

所以一般你要对指针操作,并且是判断其是不是为NULL的时候!

千万 注意在FREE(p),以后!要p=NULL!
这样才能保证下次用到这个指针的时候是不是正确!
cxjddd 2003-10-17
  • 打赏
  • 举报
回复
0xcdcdcdcd 不是空指针,但一般是无效的指针。
williamVII 2003-10-17
  • 打赏
  • 举报
回复
0xcdcdcdcd在这种情况下好像很常见,与编译器相关?
Bandry 2003-10-17
  • 打赏
  • 举报
回复
这个是VC里面的
当你delete了一个指针之后指针的值就是这个值了,还有指针变量初始化的时候,系统也会以这个值来初始化该变量;
为了使用时能确切知道一个指针是否有效,一般我们在初始化时给指针赋空值,而在delete之后也同样赋空值,在使用的时候先判断是否为空,以防止意外的内存错误。
plxmbh 2003-10-17
  • 打赏
  • 举报
回复
up
zhp831221 2003-10-10
  • 打赏
  • 举报
回复
建议你去看看C语言10大戒律,指针一定要进行初始化,不然的话有时会造成系统崩溃的,假如已经初始化了,那一定是内存地址。
短歌如风 2003-10-09
  • 打赏
  • 举报
回复
那当然不是空。空指针的定义就是0(C++)或是(void*)0(C).
如果这个指针既不是动态分配的结果,也不是对某个变量取地址的结果,更不是对指针运算的结果,那它就是一个“野指针”,访问时出错是很正常的,也是很幸运的。如果不出错,很不幸,你将会发现其它没有错误的代码引发莫名其妙的结果……
要记住,指针非空并不代表指针合法,当你的指针变量未赋初值时,当你分配的内存已经释放时,当你的指针操作导致越界时……使用非空的非法指针比使用空指针还可怕,因为目前的操作系统通常都对空指针作了预防,访问就会出错;而访问非空非法指针则可能“很正常”地改变了你不想改变的内容。
Wolf0403 2003-10-09
  • 打赏
  • 举报
回复
声明指针变量必须立刻分配内存,或者用 NULL 初始化,然后用 assert 或者 if 检查。
rtdb 2003-10-09
  • 打赏
  • 举报
回复
VC为方便调试给定的值。 若是它,说明你根本还没有初始化它。
指针也没有指向有效地址, 因此绝对不能使用它。


liao2001 2003-10-09
  • 打赏
  • 举报
回复
不管它是什么,如果不是你自己进行的初始化,就肯定是系统给的不确定的值,在使用指针之前请进行初始化,否则后果未知

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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