问题所在

1、局部指针变量没有被初始化

2、使用已经释放过后的指针

3、指针所指向的变量在指针之前被销毁

4、结构体成员指针未初始化, 没有为结构体指针分配足够的内存 ,内存越界(考虑使用柔性数组)和泄露

避免规则

1、用malloc申请了内存之后,应该立即检查指针值是否为NULL,防止使用值为NULL的指针

2、牢记数组的长度,防止数组越界操作,考虑使用柔性数组

3、动态申请操作必须和释放操作匹配,防止内存泄露和多次释放

4、free指针之后必须立即赋值为NULL

malloc用于从堆中分配一块指定大小的内存,以void *的类型返回这块内存的起始地址。malloc的参数就是要分配的内存的大小,以字节为单位。 
所以如果要分配1个整型空间就需要malloc(sizeof(int)),由于返回的void *不能直接赋值给int *,所以还要进行一次强制类型转换int * s=(int*)malloc(sizeof(int));

struct Student
{
char* name;
int number;
};

int main()
{
struct Student s;

strcpy(s.name, "gggg"); // OOPS!   ////////////////////////////////////野指针,,不能随便赋值,因为s是一个局部变量,name保存的地址是个随机值,不能往随机值里写东西/////////////////////////////////////////////

s.number = 99;

return 0;
}

最新文章

  1. 游走 bzoj 3143
  2. 开篇一文 php 和 js 默认参数
  3. 使用session防止重复提交
  4. iOS 编程思想
  5. 第二百八十六天 how can I 坚持
  6. 笔记本CPU的型号和类型的区分方法
  7. C++封装常用对象和对头文件探索
  8. QQ在线咨询状态显示不出来怎么办?http://bizapp.qq.com/webpres.htm
  9. Visual Studio 20**自动添加头部注释信息
  10. Webdriver的设计模式:Page Object(页面模型)
  11. 【NOIP2015资源+题解】
  12. 安装vue-cli
  13. CLOUD不审核修改物料
  14. js对字符串的一些操作方法
  15. WMS与MES集成
  16. Mycat 配置及优化【转】
  17. Nginx防盗链的3种方法 文件防盗链 图片防盗链 视频防盗链 linux防盗链
  18. testng入门教程6 TestNG忽略测试
  19. spring cloud 知识点
  20. 关于事件委托的整理 ,另附bind,live,delegate,on区别

热门文章

  1. Java子类方法签名相同,返回类型不同
  2. java之mybatis之占位符
  3. python程序打包exe文件
  4. 2019 汽车之家java面试笔试题 (含面试题解析)
  5. [SDOI2008]仪仗队(欧拉函数)
  6. C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)
  7. JavaWeb 之 Filter 验证用户登录案例
  8. 水泥caement单词
  9. SpringBoot 传入JSON对象参数
  10. webdriver切换frame的方法