动态内存管理(下)

简介: 动态内存管理(下)

@TOC
感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸C语言
🐿️🐿️🐿️C语言例题
🐣🐓🏀python

常见的动态内存的错误

对NULL指针的解引用操作

void test()
{
   
    int* p = (int*)malloc(INT_MAX / 4);
    *p = 20;//如果p的值是NULL,就会有问题
    free(p);
}

对动态开辟空间的越界访问

void test()
{
   
    int i = 0;
    int* p = (int*)malloc(10 * sizeof(int));
    if (NULL == p)
    {
   
        exit(EXIT_FAILURE);
    } f
        or (i = 0; i <= 10; i++)
    {
   
        *(p + i) = i;//当i是10的时候越界访问
    } f
        ree(p);
}

对非动态开辟内存使用free释放

 void test()
{
   
    int a = 10;
    int *p = &a;
    free(p);//ok?
}

使用free释放⼀块动态开辟内存的⼀部分

void test()
{
   
    int *p = (int *)malloc(100);
    p++;
    free(p);//p不再指向动态内存的起始位置
}

对同⼀块动态内存多次释放

void test()
{
   
    int *p = (int *)malloc(100);
    free(p);
    free(p);//重复释放
}

动态开辟内存忘记释放(内存泄漏)

void test()
{
   
    int *p = (int *)malloc(100);
    if(NULL != p)
    {
   
        *p = 20;
    }
} 
int main()
{
   
    test();
    while(1);
}

忘记释放不再使用的动态开辟的空间会造成内存泄漏。
切记:动态开辟的空间⼀定要释放,并且正确释放

相关文章
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
464 12
|
存储 算法 编译器
|
Java 机器人 Maven
申请发布maven中央仓库的账号
申请发布maven中央仓库的账号
271 0
|
Java
Java equals()方法与==运算符有何不同?
【4月更文挑战第13天】
125 1
剑指 Offer 29:顺时针打印矩阵
剑指 Offer 29:顺时针打印矩阵
70 0
|
缓存 Linux 开发工具
部署Gitlab(二)
部署Gitlab(二)
|
测试技术
【laralve项目】@12 商品分类--观察者模式--单元测试--处理无极限分类(3)
【laralve项目】@12 商品分类--观察者模式--单元测试--处理无极限分类
134 0
【laralve项目】@12 商品分类--观察者模式--单元测试--处理无极限分类(3)
|
数据采集 Java 程序员
程序员如何写简历?你这么优秀,一定得让别人知道啊!
简历上的项目经历怎么写才好?对于简历上的项目经历一般情况下会有以下三类......
程序员如何写简历?你这么优秀,一定得让别人知道啊!
|
智能硬件
蜂巢傅智建:国内众创空间发展的五大趋势 | 刷榜
1.4月12日,“2016京津冀创新创业高峰论坛”在石家庄举办。活动由河北省科技厅、石家庄市科技局指导,蜂巢主办,思达派、易居中国、初橙等机构协办,来自北京、杭州等地的重量级嘉宾和创业者汇聚一堂,共同探讨了河北创新创业产业发展的新思路。
356 0
|
机器学习/深度学习 运维 IDE
《快速玩转机器学习PAI DSW》活动规则说明。跟着操作说明完成下方任务,即可领取定制版T恤
PAI DSW是一款云端机器学习开发IDE,无需任何运维配置,可直接进行Notebook编写、调试及运行Python代码。活动期间跟着操作说明完成下方任务,即可领取定制版T恤,每日奖品数量有限,先到先得,快来体验吧。
《快速玩转机器学习PAI DSW》活动规则说明。跟着操作说明完成下方任务,即可领取定制版T恤