工作以来犯的第一个大的程序错误

red_berries 2008-04-22 10:05:20

PPE_INFO ppeinfo; //PPE_INFO是结构体指针类型
ppeinfo->pDosHdr = pDosHeader;
ppeinfo->pPEHdr = pNtheader;
ppeinfo->pSecHdr = IMAGE_FIRST_SECTION (pNtheader);

  我在自己机子上跑了无数遍,测试的同事也测试了很多次,不同的机子,不同的系统都试过了,都没有崩掉,今天写另外一个程序要用到这块代码,忽然觉得不对,当时那个吃惊啊?仔细看了看的确是这个代码,可为什么它就不崩溃呢?也就是在这时老大叫我过去说你上次修改的那个程序好像出问题了,有一些用户反应程序会崩掉(这个程序应该会在成千上万的机子上运行),我问是不是崩了,他说是..我告诉了他原因,他差点崩了..

  很是郁闷的我再次跟综了下程序,发现没有初始化的ppeinfo竟然指向了父函数的堆栈,到这时我才想明白了为什么以前在调试这个函数时总在函数返回后父函数莫名的访问出错.

  以此贴警告自己以后别再荡犯这种低级错误 最后问个问题就是没有初始化的指针所指向的内存位置是任意的吗?
...全文
223 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cunsh 2008-04-23
  • 打赏
  • 举报
回复

反正用 vs 编译是有警告的.

有一次我编译别人一堆代码的时候看到有这种使用前未初始化指针的警告. 进去一看. 果然...
aayzaayz 2008-04-23
  • 打赏
  • 举报
回复
ding
  • 打赏
  • 举报
回复
公司有明确规定,指针必须初始化。所以已经习惯写一个指针就给赋值。
bfhtian 2008-04-23
  • 打赏
  • 举报
回复
曾经犯过的错误,值得观注
flyingpig4945 2008-04-22
  • 打赏
  • 举报
回复
现在我的习惯是……尽量在定义变量的时候初始化……甚至达到了一旦定义必初始化的地步……
不想低调 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liujun12355 的回复:]
ding
[/Quote]
mymtom 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 red_berries 的帖子:]
C/C++ codePPE_INFO ppeinfo;//PPE_INFO是结构体指针类型ppeinfo->pDosHdr=pDosHeader;
ppeinfo->pPEHdr=pNtheader;
ppeinfo->pSecHdr=IMAGE_FIRST_SECTION (pNtheader);
我在自己机子上跑了无数遍,测试的同事也测试了很多次,不同的机子,不同的系统都试过了,都没有崩掉,今天写另外一个程序要用到这块代码,忽然觉得不对,当时那个吃惊啊?仔细看了看的确是这个代码,可为什么它就不崩溃呢?也就是在这时老大叫我过…
[/Quote]
不分配就使用, 这是内存盗用! 不厚道,很危险.
分配了不释放, 那是内存泄露, 每天重启就好!
IT_lau 2008-04-22
  • 打赏
  • 举报
回复
ding
softking1 2008-04-22
  • 打赏
  • 举报
回复
出现了野指针啊!
太可怕了!!!
red_berries 2008-04-22
  • 打赏
  • 举报
回复
哦,看来这种错误如果一但犯了还是很不容易发现的,以后一定要养成好的代码习惯了,哎,写的代码还是少啊,刚刚毕业,还在还算是实习中,接这个程序时我自己也怕怕的,知道自己粗心,担心会崩掉,结果真发生了...
baihacker 2008-04-22
  • 打赏
  • 举报
回复
嗯,吸取教训了
fallening 2008-04-22
  • 打赏
  • 举报
回复
没有初始化的指针......
abupie 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 red_berries 的帖子:]
C/C++ code
PPE_INFO ppeinfo; //PPE_INFO是结构体指针类型
ppeinfo->pDosHdr = pDosHeader;
ppeinfo->pPEHdr = pNtheader;
ppeinfo->pSecHdr = IMAGE_FIRST_SECTION (pNtheader);



  我在自己机子上跑了无数遍,测试的同事也测试了很多次,不同的机子,不同的系统都试过了,都没有崩掉,今天写另外一个程序要用到这块代码,忽然觉得不对,当时那个吃惊啊?仔细看了看的确是这个代码,可为什么它就…
[/Quote]任意的。其实运行的时候和环境关系很大,一般刚刚运行的时候不容易出错,因为一开始程序分配的内存少,指向的地址一般是可访问。
Treazy 2008-04-22
  • 打赏
  • 举报
回复
指针所在的内存是什么这是不知道的!

任意!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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