分享

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

 昵称11935121 2018-06-18

内存泄漏

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

(1)内存泄漏的含义:

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

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

(2)内存泄漏示例:

#include

#include

int main()

{

while(1) //死循环

{

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

}

return 0;

}

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

写在最后

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多