如何处理“烫",奉上40分求救,各位帮忙,急

IdShuLin 2001-12-03 08:21:03
我用vc访问注册表时,显示出的结果为什么都是”烫烫烫烫烫烫
...全文
146 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ariso 2001-12-09
  • 打赏
  • 举报
回复
烫"的内码是—0xCCCC是VC调试手段的一种。
因为0xCC,0xCD比较少的使用,所以VC在运行调试版本的时候,分配的内存都初始话为烫烫。如果你看到你使用的内存处存在一堆的烫烫。。。
1.其实这个问题并不是注册表的问题,
2.其实这个就是数组或指针的越界问题,你的指针指向了另一个地方,或是操作没有成功
3.在用数组前你应先初始化你的数组,memset...

我想这样就不会有问题了。

set active config to release....
hujun614 2001-12-09
  • 打赏
  • 举报
回复
TO: lanzhengpeng2(兰征鹏),我当然知道是0xCCCC,如果你说调试的时候是这样,那么请问,
在Win98下可以不注意字符串结尾的问题,但要是在Win2k下就会出现类似死循环,很久以后也
许能继续执行,就是因为用某些API得到的字符串值后没有记住用'\0'结尾,都是Release版,
就没有调试环境了吧,为什么还这样呢。
要是你不相信,你也可这自已做做测试,

buf[10];
buf[8]='\0';
AfxMessageBox(buf);
在Win98和Win2k下,你将得到不同的结果,你相信吗?

我的QQ:12953091,很高和lanzhengpeng2(兰征鹏)一起探讨VC++编程。
thinp 2001-12-04
  • 打赏
  • 举报
回复
其实这个问题并不是注册表的问题,如果注册表访问正确,那么其实这个就是数组或指针的越界问题,在用数组前你应先初始化你的数组,一般只要在a[0]=0就可以了。例如你用sprintf(……)就可以这样用。
而且当发现此类错误时,也有是上面仁兄所提的最后没有边界的问题。当然你加上边界就可以了
我怀疑你的问题错误的来源有三个,
一、注册表键值读出错误。
二、数组太小,注册表键值中的数据比你的数组要长,所以本身就越界了,从而在最后没有0
三、如果上面都没有错误,那就是你编程不小心,错用了另外的一个没有初始化的变量。
不知道我的分析对你有没有帮助
eggplant 2001-12-03
  • 打赏
  • 举报
回复
我估计你的注册表访问函数有问题,关键是没有访问到实际的数据。把存放结果的空间清零,使用memset,再试试,如果依旧,那就是你的程序有问题,前提是注册表确实存在数据。
lazecat 2001-12-03
  • 打赏
  • 举报
回复
我遇到过,也许是指针指错位置了。
thomas269 2001-12-03
  • 打赏
  • 举报
回复
你是否沒有初始化cbData = sizeof(buf), 再call
char buf[1024];
DWORD cbData = sizeof(buf);
DWORD type;
RegQueryValueEx(hkey, "Software\\ABC\\CDE", NULL, &type, buf, &cbData);
lanzhengpeng2 2001-12-03
  • 打赏
  • 举报
回复
hujun614(胡均):你错了。
你去看看"烫"的内码是什么——0xCCCC。这是VC调试手段的一种。
因为0xCC,0xCD比较少的使用,所以VC在运行调试版本的时候,分配的内存都初始话为烫烫。如果你看到你使用的内存处存在一堆的烫烫。。。,显然,你什么地方错了,要不然,就是BT导致你刚喝了100度的开水。
hujun614 2001-12-03
  • 打赏
  • 举报
回复
win2k就是用烫,而不是用0来初始化未用的空间的。win98是0吧。
所以你得到值后没有加0,在Win2K中这个字符串就很难结束。
就是很长的烫烫烫烫烫烫烫烫。
:)
祝你好运。
alpasino 2001-12-03
  • 打赏
  • 举报
回复
首先你确定注册表的键值是对的了?那要先调用一便注册表读的函数,不要带要读到什么地方,
然后就会得到本键值的大小,然后带入参数,就会按照键值的大小得到数据,旧不会有烫了!!要是再不明白给我发邮件!! alpasino@eyou.com
dog_dog 2001-12-03
  • 打赏
  • 举报
回复
study
swordbroken 2001-12-03
  • 打赏
  • 举报
回复
操作没成功
注意那个参数 LPBYTE lpData, // data buffer
定义为 char lpData[LENGTH];
LENGTH最小为237,如果你的数据长的话这个值要再大一些,至于为什么是237我也不知道
我是从261一个一个试下来得知的,
不知是否有高手可以告诉我是为什么
leojay 2001-12-03
  • 打赏
  • 举报
回复
这是你接受结果的变量没初始化的原因。
如果你的变量为a,则在一开始就要:memset(a,0,sizeof(a));
Great_Bug 2001-12-03
  • 打赏
  • 举报
回复
你的指针指向了另一个地方,或是操作没有成功
roy_hu 2001-12-03
  • 打赏
  • 举报
回复
我也遇见过,这种情况一般都是出现在字符串最后没有\0时,你自己加上\0应该可以。
注册表我没弄过,不知道说的对不对

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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