内存溢出 内存泄露 内存越界 堆栈溢出 野指针

本文详细介绍了内存管理中的常见问题,包括内存泄露的不同类型及其后果,内存溢出的原因,内存越界的概念,以及堆栈溢出的两种形式。同时,通过实例解析了野指针的产生原因和潜在风险,强调了释放内存后应将指针设为NULL的重要性。
摘要由CSDN通过智能技术生成

1.忘记free啊
2.循环里使用了malloc,循环写死内存用光了啊
3.数组访问越界或指针非法访问啊
4.向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。
5.在函数中调用构造函数使用了new,却没有释放,虽然最终系统会进行回收,但还是会造成内存的泄露,应该使用析构函数进行释放的操作。 等等…

1.内存泄露

1.什么是内存泄露? 内存泄露是指程序中已动态分配的堆内存因为某种原因未释放或无法释放,造成内存空间的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

2.内存泄露的分类?
(1)常发性内存泄露:发生泄露的代码会被多次执行到
(2)偶发性内存泄露:发生泄露的代码在某些环境或操作下才会发生
(3)一次性内存泄露:只会被执行一次
(4)隐式内存泄露:程序在运行过程中不断分配内存,直达结束后才释放。严格来说这不算内存泄露,但是服务器运行时间很长,可能会耗尽所有内存

实例: 当运行下面的Test函数会有什么样的后果?

void GetMemory(char **p,int num)
{
*p = (char *)malloc(num);
}

void Test(void)
{
char *str = NULL;
GetMemory(&str,100);
strcpy(

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值