VC菜单中的命令Execute Program(Ctrl+F5)和Go(F5)有区别吗?

Colo 2001-08-24 05:22:50
近日我遇到了一个奇怪的问题,当我编译好的程序用Go命令运行时没有错误,可是
当我Execute时却报错.详细描述如下:
TCHAR buf1[16]={0};
TCHAR buf2[16]={0};
LPTSTR p1=(LPTSTR)lpbiHead;
LPTSTR p2=(LPTSTR)lpbi;
//////////////
//其中lpbiHead和lpbi都是LPBITMAPINFOHEADER类型的指针,并且已正确指向自己
//的内存单元
/////////////
int i=0;
memcpy(buf1,p1+i,16);
memcpy(buf2,p2+i,16);
if(memcmp(buf1,buf2,16)!=0)
{
//*****************************************
//问题就出现在这个位置当用Go命令运行时不能进入该if语句,
//但是用Execute时却进入了该if语句,我看了这时的buf1和buf2
//确实不一样。
//奇怪!奇怪?奇怪...
//是不是这两个命令对内存单元的定义不一样?
//期望的结果应该是Go时执行的那样即buf1等于buf2
//*****************************************
}

哪位大哥能指点指点?
...全文
181 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vince_xu 2001-09-15
  • 打赏
  • 举报
回复
多谢,多谢
Colo 2001-08-29
  • 打赏
  • 举报
回复
但是这两个命令执行起来还是有点区别,不知为什么。
Colo 2001-08-29
  • 打赏
  • 举报
回复
to vince_xu
分数还是给你吧,虽然是我自己马虎出的错。
vince_xu 2001-08-24
  • 打赏
  • 举报
回复
对啊,那就去查p1,p2吧,一直找到出事的地方再说
Colo 2001-08-24
  • 打赏
  • 举报
回复
??
Colo 2001-08-24
  • 打赏
  • 举报
回复
就是在memcpy时。
我用
for(int j=0;j<16;j++)
{
buf1[i]=*(p1+i+j);
buf2[i]=*(p2+i+j);
}
也试过了可是buf1和buf2还是不一样,我想是p1,p2出了问题
vince_xu 2001-08-24
  • 打赏
  • 举报
回复
建议你把p1,p2,buf1,buf2的值都显示出来看一下,看看两个不同的命令下语句什么时候开始分歧的。
Colo 2001-08-24
  • 打赏
  • 举报
回复
?????

16,470

社区成员

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

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

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