新乡做网站,重庆展厅设计制作要点,京东旗下的企业网站有哪些,国外视觉设计网站前言 上一篇介绍了C语言中 动态内存管理函数#xff0c;本片讲解的是 在我们使用动态内存管理时 常见的错误#xff0c;一起来看看吧~ 欢迎关注个人主页#xff1a;逸狼 创造不易#xff0c;可以点点赞吗~ 如有错误#xff0c;欢迎指出~ 目录 1.对NULL指针的解引⽤操作
错… 前言 上一篇介绍了C语言中 动态内存管理函数本片讲解的是 在我们使用动态内存管理时 常见的错误一起来看看吧~ 欢迎关注个人主页逸狼 创造不易可以点点赞吗~ 如有错误欢迎指出~ 目录 1.对NULL指针的解引⽤操作
错误代码展示
修改
2.对动态开辟空间的越界访问
错误代码展示
修改
3 .对⾮动态开辟内存使⽤free释放
错误代码展示
4 .使⽤free释放⼀块动态开辟内存的⼀部分
错误代码展示
5. 对同⼀块动态内存多次释放
错误代码展示
修改
6.动态开辟内存忘记释放内存泄漏
错误代码展示
修改编辑 1.对NULL指针的解引⽤操作
错误代码展示
int main()
{int* p (int*)malloc(100);*p 20;//p有可能是NULL指针 //释放free(p);p NULL;return 0;
}
修改 2.对动态开辟空间的越界访问
错误代码展示
int main()
{int *p(int*)malloc(40);if (p NULL){return 1;}//使用for (int i 0; i 10; i){*(p i) i;//当访问第11个元素时就越界访问了}free(p);p NULL;return 0;
} 修改 3 .对⾮动态开辟内存使⽤free释放
错误代码展示
int main()
{int a 10;//⾮动态开辟内存int* p (int*)malloc(40);if (p NULL){return 1;}//使用//……p a;//p指向的空间不再是堆区上空间了free(p);p NULL;return 0;
} 4 .使⽤free释放⼀块动态开辟内存的⼀部分
错误代码展示
void test()
{int *p (int *)malloc(100);if (p NULL)return 1;//使用p;//释放free(p);//p不再指向动态内存的起始位置
}5. 对同⼀块动态内存多次释放
错误代码展示 void test()
{int* p (int*)malloc(100);if (p NULL){return 1;}free(p);free(p);//重复释放
}
修改 6.动态开辟内存忘记释放内存泄漏
malloc、calloc、realloc申请的空间如果不主动释放出了作用域不会销毁 释放的方式
free主动释放直到程序结束由操作系统回收
malloc函数出了test函数申请的空间不会销毁造成内存泄漏
错误代码展示 void test()
{int* p (int*)malloc(100);if (NULL ! p){*p 20;}
}int main()
{test();while (1);
}
修改