我在调试时发现.为什么给变量赋值,会无效?

tx183584 2011-05-02 05:35:53
这段代码是读取文件中的内容,但是有两点很奇怪,
1.wchar_t * GPL;这个变量会跟FilePath相等?
2.给局部变量赋值总是无效?
	
extern "C" _declspec(dllexport) wchar_t * cdecl readGamePeopleInfo(wchar_t* FilePath,DWORD L)
{


HANDLE FileHandle=NULL;
wchar_t * GPL;
FileHandle=CreateFile(FilePath,GENERIC_READ |GENERIC_WRITE|FILE_SHARE_DELETE ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_FLAG_WRITE_THROUGH,0);
ReadFile(FileHandle,&GPL,L,&num,NULL);
L=94;
if(num==0)
{
MessageBox(NULL,NULL,NULL,NULL);
}
return GPL;
}

图片地址
...全文
443 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tx183584 的回复:]

引用 11 楼 lactoferrin 的回复:

ReadFile(FileHandle,&GPL,L,&num,NULL);
这可是一个严重的错误

有什么错误,,,,
[/Quote]
这个ReadFile修改的是GPL的值,不是GPL指向的内存
tx183584 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lactoferrin 的回复:]

ReadFile(FileHandle,&GPL,L,&num,NULL);
这可是一个严重的错误
[/Quote]
有什么错误,,,,
pgmsoul 2011-05-03
  • 打赏
  • 举报
回复
ReadFile(FileHandle,&GPL,L,&num,NULL);

这一句能编译通过?
pgmsoul 2011-05-03
  • 打赏
  • 举报
回复
wchar_t * GPL;
ReadFile(FileHandle,&GPL,L,&num,NULL);
return GPL;

?????????????
tompaz 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangyutao0232000 的回复:]

如果看不到局部变量的值,原因可能是项目选项优化开关被打开了,某些局部变量被优化掉。关闭优化选项,调试时会看到局部变量的值。

优化就是将从未被使用的变量在栈空间归0
[/Quote]
优化可不是这意思
是编译器认为没用的代码,会被丢弃掉,比如这个l=94
海盗医生 2011-05-03
  • 打赏
  • 举报
回复
如果看不到局部变量的值,原因可能是项目选项优化开关被打开了,某些局部变量被优化掉。关闭优化选项,调试时会看到局部变量的值。

优化就是将从未被使用的变量在栈空间归0
tx183584 2011-05-03
  • 打赏
  • 举报
回复
什么叫优化掉?
海盗医生 2011-05-03
  • 打赏
  • 举报
回复
你在return 前边加一句,L++;就是有值的

函数中声明但未使用的变量:
1、警告
2、有可能被优化掉
xiaopoy 2011-05-03
  • 打赏
  • 举报
回复
你的L是0,要read的长度是0,这样其实未被初始化的GPL的值是不确定的,是堆栈上一个随机的数据。
况且4c22b0和4c2334也不一样啊。 /:^}

但LS的说L的赋值被优化掉,这个是指?
Lactoferrin 2011-05-03
  • 打赏
  • 举报
回复
ReadFile(FileHandle,&GPL,L,&num,NULL);
这可是一个严重的错误
csx007700 2011-05-02
  • 打赏
  • 举报
回复
优化了吧 楼上正解.....
Lactoferrin 2011-05-02
  • 打赏
  • 举报
回复
一个4c22b0,一个4c2334
L的赋值被优化掉了?
aiwnx 2011-05-02
  • 打赏
  • 举报
回复
你用的是vc2010吧,是在调试状态下吗,修改了编译或链接的优化选项了没有,且pdb文件正常生成了吗

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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