• 对NULL指针的解引用操作

int* p = (int*)malloc(20); //malloc开辟空间 将其地址放在int* 类型的指针变量里
*p = 5;// 对p 解引用 存入5在空间里
/*
可能出现问题 malloc开辟空间失败会返回NULL 空指针的
不能明确得知 malloc返回的是什么
所以得先判断 是否开辟成功
*/
if(p == NULL)
{perror("malloc");return 1;
}
else
{*p = 5;
}
free(p);
p = NULL;
  • 动态开辟空间的越界访问

0

p

1

p+1

2

p+2

3

p+3

4

p+4

//动态内存开辟
int* p = (int*)malloc(20);//开辟20个字节的空间 都是int类型 4*5 == 20 5个int类型空间
//判断
if(p == NULL)
{return 1;
}
//存入数值
int i = 0;
for(I = 0; I < 20; I++) // p+0 .. p+19 越界
{*(p+i) = I; //类似于p[I] = I;
}
//释放
free(p);
p = NULL;
  • 对非动态开辟内存空间的free释放

void test()
{int num = 10;int* p = &num;// ...free(p);//释放的是非动态开辟内存的空间p = NULL;
}
  • 使用free释放一块动态开辟内存的一部分

//动态内存开辟
int* p = (int*)malloc(40);//开辟40个字节的空间 都是int类型 4*10 == 40 10个int类型空间
//判断
if(p == NULL)
{return 1;
}
//存入数值
int i = 0;
for(I = 0; I < 5; I++) // p+0 .. p+19 越界
{*(p+i) = I; //类似于p[I] = I;p++; //这步关键 巨关键
}
//释放
free(p);
p = NULL;

一文介绍常见的动态内存错误相关推荐

  1. C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组

    动态内存管理目录: 动态内存函数的介绍 常见的动态内存函数的错误 柔性数组 为什么会有动态内存管理呢 我们在日常使用中,创建一个数组,一个变量时都会开辟空间 如: int a; //在栈上开辟一个四字 ...

  2. 常见C语言内存错误及对策

    转自C语言中文网:http://see.xidian.edu.cn/cpp/html/483.html 一.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的 ...

  3. 动态内存管理(开辟以及释放动态内存空间)

    文章目录 前言 malloc函数 calloc函数 realloc函数 free函数 - 避免内存泄漏 常见的动态内存错误 前言 如果我们被问道:如何创建一个可以根据用户需求来开辟大小的数组? 可能有 ...

  4. 内存分配者-动态内存

    文章目录 动态内存管理 为什么存在动态内存分配 动态内存函数的介绍 malloc==申请空间==和free==释放空间== 那我们可不可以看开辟失败的呢 有借有还 ==free释放内存== 注意 ca ...

  5. C语言提高篇之——动态内存管理

    目录 1. 动态内存分配存在的意义 2.动态内存函数介绍 2.1 malloc 2.2 free 2.3 calloc 2.4 realloc 3.常见的动态内存错误 3.1 对空指针解引用 3.2 ...

  6. C语言 --- 动态内存管理(上)+优化版通讯录+笔试题

    文章目录 前言 一.为什么存在动态内存分配 二.动态内存函数的介绍 2.1.malloc函数+free函数 2.2.calloc函数+free函数 2.3.realloc函数 三.常见的动态内存错误 ...

  7. C进阶⚡- 05动态内存管理

    我知道的只是  " 肉随便加  "和  " 要加多少加多少  " 这些词.    ---- 路飞 阶段2目标: 此阶段开始大量刷题,多多参加编程类竞赛,在实战中 ...

  8. 【C进阶】动态内存管理

    ⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏+留言 ⭐系列专栏:C语言进阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们 ...

  9. C语言第十三课,动态内存分配

    动态内存分配的空间放在堆区.动态内存函数主要有:malloc,calloc,realloc 动态内存函数的介绍 malloc 申请一个空间,大小是size的大小,指向的一个类型不明,因为在设计的时候, ...

最新文章

  1. hihoCoder#1384 : Genius ACM
  2. 李彦宏再提自动驾驶:是时候推动无人车商用了
  3. access port 与portfast之间的关系
  4. Java for LeetCode 206 Reverse Linked List
  5. 自然语言处理之AI深度学习顶级实战
  6. Qt工作笔记-仿大佬风格代码(使用#ifdef Q_OS_WIN32)
  7. 在线闹钟html代码复制,html5时钟实现代码
  8. 漫画:Dijkstra 算法的优化
  9. rpgmv存档修改html_使用HTML5存档网站内容更改
  10. Java 将HTML转成PDF的方法
  11. 【王道考研】信号量机制
  12. 使用 Python 将 PDF 文件按页进行拆分
  13. QStringList去除重复项
  14. LeetCode 253. 会议室 II**(double)
  15. Java面试总结(2021优化版)发布1024程序员节
  16. 同或门真值表_逻辑函数表达式、真值表.ppt
  17. jsp 实现查询功能
  18. org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException
  19. 浪潮信息加入,已完成与龙蜥操作系统产品兼容性验证
  20. day6——css3

热门文章

  1. 人为差错 (Human Error)(一)
  2. gradle不同版本下载太慢---腾讯做了国内镜像可以直接下载
  3. BeanFactory和FactoryBean的区别
  4. flex 为之疯狂的
  5. AAAI 2023| 旷视研究院入选论文亮点解读
  6. keil护眼色配置及插件整理
  7. 如何参与波卡卡槽拍卖获得Acala链ACA奖励?
  8. Java GUI之贪吃蛇---[观看bilibili-狂神说Java--学习笔记]
  9. SQL 语句中的 (+)
  10. LVM原理详解及实战