代码如下,如何解决?CString StrTmp;
HKEY hk2;
int i;
UCHAR szBuf[80]; 
DWORD dwType;
DWORD dwSize;RegCreateKey(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\VMS\\ChengNum", &hk2); long ret1 = RegQueryValueEx(hk2, "ChengNum" , 0 , &dwType ,(LPBYTE)szBuf,&dwSize); StrTmp.Format("%s",szBuf);
i = atoi(StrTmp); 
RegCloseKey(hk2);
return i;

解决方案 »

  1.   

    那为什么在DEBUG版本中管用?我用
    do
    {
        long ret1 = RegQueryValueEx(hk2, "ChengNum" , 0 , &dwType ,(LPBYTE)    szBuf,&dwSize); 
    }while(ret1 != 0);暂时解决问题呵呵,很可笑吧
      

  2.   

    debug与release两种版本下的变量的初始化的值是不一样的,所以有时在debug下正常
    在release下就不正常,所以最好对变量附一个初始值,这样最保险
      

  3.   

    经常性的问题
    debug 为了便于调试 调用了很多release中没有的东西
    所以经常debug没问题,release出错
      

  4.   

    dwSize是用来指出缓冲区大小的,在你这里就是sizeof(szBuf)/sizeof(szBuf[0])
    你如果没有初始化的话,在Debug下会自动初始化为0xcccccccc(靠,这样的缓冲区
    也太大了),
    但在Release下会是任意值(好像大部分情况是0),这样API认为你的缓冲区
    不足,就会在dwSize中指出正确的大小,并返回错误,所以下一次调用
    就可以成功了