龙空技术网

C语言最简单攻击手段——内存泄漏

岑寂扶你去学C 458

前言:

目前大家对“c语言检查内存泄露”大体比较注重,同学们都想要知道一些“c语言检查内存泄露”的相关内容。那么小编同时在网络上汇集了一些关于“c语言检查内存泄露””的相关知识,希望咱们能喜欢,看官们快快来学习一下吧!

内存泄漏

在C语言程序设计中,内存泄漏几乎是很难避免的,C程序产生泄漏内存,则运行速度会逐渐变慢,并最终停止运行;如果产生覆盖内存,程序会变得非常脆弱,很容易受到恶意用户的攻击。内存泄漏是一种隐性危害,它们很难被发现,通常不能在相应的源代码中找到错误,需要仔细分析与专门的检测工具才能发现。

(1)内存泄漏的含义:

通常我们所说的内存泄漏,是指分配出去的内存在使用之后没有释放掉,没有回收,长此以往,会造成没有足够的内存可以分配。一般表现为运行时间越长,占用的内存越多,最终导致系统奔溃。一般的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

(2)内存泄漏示例:

#include <stdlib.h>

#include <stdio.h>

int main()

{

while(1) //死循环

{

malloc(1024); //动态内存分配,分配1024个字节的内存

}

return 0;

}

这段代码有一个死循环,然后每次循环都会申请1024个字节的内存,却并没用手动释放内存,长此以往,会造成没有足够的内存可以分配,大家可以在自己的电脑上面试一下,然后打开任务管理器,看内存的使用率。轻则程序崩溃,重则死机,当然操作系统一般会有保护机制,不会产生太严重的后果

写在最后

初学者有什么不懂的可以私信我,需要系统学习资料和系统学习框架图的同学,可关注小编头条号,欢迎留言评论和私信小编。【私信方法】文章上方处点击“作者头像”,进入作者首页,在作者主页上方点击“关注”旁边的“发私信”即可。私信内容:学习帮助。

喜欢小编的文章的朋友可以关注、收藏、转发、留言,阅读愉快!!

标签: #c语言检查内存泄露