赞
踩
什么是内存越界?什么是内存泄露?分别是如何造成的?
内存越界就是成功地分配了内存,并且⼰经初始化,但是在操作过程中越过了内存的边界。应⽤如下代码对内存越界进⾏说明。
- char *pl = "helloworld";
- char *p2 = (char *)malloc(sizeof(char)*strlen(pl));
- strcpy(p2,p1);
字符串 p1 占⽤11个字节,其中包括最后的结束标识符“ \0 ”。但是在为 p2 分配内存空间时,⽤ strlen(p1) 得到的字符串 p1 的长度为10个字节。因此,将 p1 中字符串赋予 p2 时出现了越界。
说明:
内存越界问题通常出现在数组和指针的操作上。
如果在分配了内存空间并使⽤完后,没有及时地释放掉指针所占⽤的内存空间,⽽再次使⽤这个指针时又为其分配内存。
如此操作,有限的内存空间就会被消耗,逐渐减少, 这种现象称之为内存泄露。涉及释放内存的就是使⽤ malloc( ) 等函数分配的内存,因此会 产⽣泄露的内存是堆上的内存。
定义了⼀个指针后,要及时为这个指针分配内存空间,这是为了防⽌野指针的出现。 在不使⽤这块内存后,要及时释放掉该内存,这不⽌是为了节省空间,更重要的是为了防⽌内存泄露。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。