什么情况下要用到ZeroMemory这个函数

JAVA3 2002-12-18 05:43:52
请高手指点
...全文
2134 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
qing_li73 2002-12-19
  • 打赏
  • 举报
回复
see another sample about this issue :

http://expert.csdn.net/Expert/topic/1006/1006274.xml?temp=.4603693
dxhdxh2k 2002-12-19
  • 打赏
  • 举报
回复
up
wabc 2002-12-19
  • 打赏
  • 举报
回复
当你不想用memset时
hnyyy 2002-12-19
  • 打赏
  • 举报
回复
to JAVA3(JAVA FUNS):
幸好我从未拷贝msdn的资料。

但是谁也没有义务替你回答问题,就算回答错了,你也不应有什么怨言。毫无疑问,qing_li73(bluemoon)满怀善意地为你回答问题,而且回答得并不象你说的没有意义,谁敢保证能完全捉摸透提问者真正的意思?如果都象你,谁还敢回答问题?

我觉得qing_li73(bluemoon)一向很谦逊。我认为你对qing_li73(bluemoon)的心理有很大伤害,你应该为此向qing_li73(bluemoon)道歉!!
JAVA3 2002-12-19
  • 打赏
  • 举报
回复
to qing_li73(bluemoon)
其实我说那些话,只是特别当时很想知道问题的答案,我又何尝不知道你是要我自己去看例子,从实践中理解它,但因为我急,所以我不想用一种自己总结的方法,而只是想立即得到一个初步的答案。

不过最近自己心情都很遭,所以看到有些偏离问题的答案,总想说上几句,如有得罪之处,还请海涵。

ukyoking 2002-12-19
  • 打赏
  • 举报
回复
qing_li73(bluemoon) 兄台比较直爽,我喜欢结交这样的朋友,有机会真想结识一下,不知兄台肯否赏脸。
楼主也是个爽快人,但是有点义气用事,不过从言语上看楼主对人还是很真诚的。
呵呵,我来晚了,话都被说光了,只好做个和事小:)不好意思,我也是菜菜鸟一只,权当给你up。
不过我记得好象在DirectX程序中ZeroMemory用的较多,主要是用来初始化大型的数据结构,当然,如果你喜欢,也可以用memset。
qing_li73 2002-12-19
  • 打赏
  • 举报
回复
to JAVA3(JAVA FUNS) :

最后1次回复。

1。“就好像我问什么情况下用菜刀,你给我的回答是,菜刀可以切菜,切肉,还可以杀人,还告诉我怎样用菜刀怎样杀人,怎样切肉最好,怎样切菜最好。却不告诉我为什么我要用菜刀来做这样的事情,用菜刀做这样的事情有什么好处。

你的比喻很好,其实反过来想想,正是我让你看例子的作用,随便找几个例子,如果不用这个函数,结果有变化吗?如果没有,至少说明某些情况下可以不用此函数,如果有,什么变化?有其他替代办法解决吗?这都值得我们思考。理解别人的程序有时比自己写更难,关键要总结。我给你提供的是个思路,是方法,这也是我个人实践过行之有效地,我们不可能独自解决所有问题,也不可能遇到所有问题,正如不到csdn来,我还不知道有这样那样的问题,应该充分利用现有的资源,取他人之长,补自己之短,兼听则明。

2。我对这个函数的具体看法。
我从来不用这个函数,一般初始化我是用指针加循环来解决,效率比这个高,你可以trace这个函数,看它具体操作过程。我个人认为,如果确信数组元素值不会直接使用(给别的变量赋值或给函数传递),甚至都可以不用初始化。最重要的是控制数组下标,不要越界访问。

3。至于我当“hermit”,这个真的和你没有1点关系,来csdn回答问题近3个月,自我感觉现在提高的速度很慢,应该把时间抽出来做些别的。所以最近去非技术论坛多些,灌水轻松,也少了1份替别人分忧的迫切。不是不想帮别人,窃以为csdn应该把同类的帖子,有代表性地做到FAQ里面,方便大家查询,提高效率。如果我因为你1点指责就受不了,那就不是我了,呵呵 ,其实在这里也能体会到程序人生,很都人都是个性鲜明,包括你。要是一起喝酒,应该不错,爽快。

以上是我的一些想法,适合你的就采用,不适合的就让它随风去。
qing_li73 2002-12-19
  • 打赏
  • 举报
回复
to JAVA3(JAVA FUNS) :

I just according to my method to resolve the questions, maybe it's my formul, not suitable for u...I often find sth from others' samples (of course not only sparkle but also sth else ) ,what most important is we can learn from the current huge library

By the way, I want to be a hermit not for ur sake, I seldom answer technical questions recently . and I never feel angry with relative discussion,

In a word, I'm not the one u imagine :)

Good luck !
demetry 2002-12-18
  • 打赏
  • 举报
回复
ZeroMemory的功能其实自己也可以编写,如果BOSS给你一个任务,让你将一段内存清零,就算你不知道ZeroMemory,也可以编写一段代码来完成。MSDN是权威的资料,很多理论书籍都是从这个MSDN派生来的,同时MSDN又是很多书籍的总汇。只不过全是英文,有时理解会有偏差。
fengge008 2002-12-18
  • 打赏
  • 举报
回复
楼主 谁能知道你有没有看MSDN. COPY MSDN目的是给你指一条找相关资料的路。其实 qing_li73(bluemoon) 也是好心的。
beyound 2002-12-18
  • 打赏
  • 举报
回复
同意 realdreamer(楼主英明,贫僧久仰大名,特来拜见) ,就是这个意思。

例子:可用于快速清除数组部分内容

int a[100];
for(int i=0;i<100;i++)
{
a[i]=i;
}
ZeroMemory(&a[20],20*sizeof(a[0]));

这样从a[20]到a[39]全都等于0了!
JAVA3 2002-12-18
  • 打赏
  • 举报
回复
还是那句话,并不是你才用msdn,我每天只要在写程序,我的msdn总会开着的。你如果copy哪位高人可以解决我的问题的文章,我很欢迎,但是你却copy了一个只要碰到问题就必须去查的msdn中的内容,言下之意就是我没有去看msdn,只有你们高手才去看msdn,而我们菜鸟是不看msdn的。
所以我想告诉你,虽然对于vc我是菜鸟,我刚学不到半个月,但是msdn在我没有用vc之前就已经经常用了。所以菜鸟也是看msdn的,看不懂了才来问得。

说你几下你就耍个性了,要当什么hermit(我英文不是很好,查了金山词霸才知道什么意思的),如果你觉得我说的不对,你尽管当我吃饱了撑着没事做,乱说话。如果觉得我说得对,就应该好好的采纳我的意见,而不是要当什么hermit(今天也让我多认识了一个单词)。
qing_li73 2002-12-18
  • 打赏
  • 举报
回复
so sorry for my tedious copy
qing_li73 2002-12-18
  • 打赏
  • 举报
回复
Maybe it's due to my numb feeling to understand ur meaning ....I'd come back to be a hermit
qing_li73 2002-12-18
  • 打赏
  • 举报
回复
ok, just take it easy
JAVA3 2002-12-18
  • 打赏
  • 举报
回复
例子我也有,我就是不清楚例子中为什么要用到这个,所以才问问题,你给我那么多例子有什么用。

就好像我问什么情况下用菜刀,你给我的回答是,菜刀可以切菜,切肉,还可以杀人,还告诉我怎样用菜刀怎样杀人,怎样切肉最好,怎样切菜最好。却不告诉我为什么我要用菜刀来做这样的事情,用菜刀做这样的事情有什么好处。

所以我想说的是realdreamer(楼主英明,贫僧久仰大名,特来拜见) 说得很对,他的一句话让我马上明白了为什么要用ZeroMemory。我本来就不想给你分,因为你根本就没有回答对我的问题。

还有对你忠告一句,回答别人问题,希望能做到词能达意,对得起自己的两颗星星,不要老是copy,让人误会你的两颗星星都是copy来的。
qing_li73 2002-12-18
  • 打赏
  • 举报
回复
I don't want to get ur points, just give the reference :)

Practice makes perfect.
qing_li73 2002-12-18
  • 打赏
  • 举报
回复
to JAVA3(JAVA FUNS):

1. u know the first handy information via MSDN, in fact, it's the answer u want, just need ur understanding

2. others samples can help u more..
realdreamer 2002-12-18
  • 打赏
  • 举报
回复
ZeroMemory 只是将指定的内存块清零.

使用结构前清零, 而不让结构的成员数值具有不确定性, 是一个好的编程习惯.
醉马不肖 2002-12-18
  • 打赏
  • 举报
回复
一般没有必要用
加载更多回复(4)
CODE:// 结构内存用0初使化 - 注意: 一些Windows函数要求这么做,不过我记不得哪些需要,哪些不需要了:) NOTIFYICONDATA niData; ZeroMemory(&niData,sizeof(NOTIFYICONDATA));// 得到Shell32的版本号,并依此设置结构成员cbSize的大小 - 注意:MSDN文档中关于这部分的说明有点模糊不清(见本文后面),所以我并不确定下面的代码是否完全正确 ULONGLONG ullVersion = GetDllVersion(_T("Shell32.dll")); if(ullVersion >= MAKEDLLVERULL(6,0,0,0)) niData.cbSize = sizeof(NOTIFYICONDATA); else if(ullVersion >= MAKEDLLVERULL(5,0,0,0)) niData.cbSize = NOTIFYICONDATA_V2_SIZE; else niData.cbSize = NOTIFYICONDATA_V1_SIZE;// 结构成员uID可以是任何UINT值,这个ID用来标志你的托盘图标,Shell_NotifyIcon函数后面将会用到这个值 niData.uID = MY_TRAY_ICON_ID;// 结构成员uFlags指出哪些结构成员是有效的。此处也可以设置提示窗口的样式,如冒泡提示:NIF_INFO niData.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;// 装载图标。 - 注意:调用完函数Shell_NotifyIcon后应销毁该图标。 niData.hIcon = (HICON)LoadImage( hInstance, MAKEINTRESOURCE(IDI_MY_ICON), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);// 设置接收托盘事件消息的窗口句柄。 niData.hWnd = hWnd;// 设置发送消息值。- 注意:消息值的大小应该在WM_APP和0xBFFF之间 niData.uCallbackMessage = MY_TRAY_ICON_MESSAGE;

16,473

社区成员

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

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

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