考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:电脑故障 > 内 存 > 文章内容
  

常见的内存错误及其对策(4)

 [ 2016年1月11日 ] 【

  –释放了内存,却继续使用它

  n起因:

  –指针所指的内存被释放以后,并不表示指针会消亡

  –其地址仍然不变(非NULL),只是该地址对应的内存是垃圾

  –指向垃圾内存的指针是“野指针”

  nchar* GetInput(void)

  {

  char s[80];

  scanf("%s", s);

  return s;

  }

  warning C4172: returning address of local variable or temporary

  n输出乱码

  nvoid GetInput(char* s)

  {

  scanf("%s", s);

  }

  #include

  #include

  void GetInput(char *p)

  {

  p = (char *)malloc(100);

  }

  程序崩溃,函数不能传递动态分配的内存?

  –尽量把malloc集中在函数的入口处,free集中在函数的出口处

  –如果free不能放在函数出口处,则指针free后立即设置为NULL

  –不要把局部变量的地址作为返回值返回,因为该内存在函数体结束时被自动销毁

  –指针要么初始化为NULL,要么是其指向合法的内存

本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved