C语言最简单的攻击手段——黑客基本技能

内存泄漏

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

(1)内存泄漏的含义:

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

(2)内存泄漏示例:

#include 

#include 

int main()

{

while(1)//死循环

{

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

}

return 0;

}

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

写在最后

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

如果有喜欢或者对C语言感兴趣的小伙伴可以加一下小编的C语言交流群815393895

你可能感兴趣的:(C语言最简单的攻击手段——黑客基本技能)