场景说明
调试了分配内存的策略,看看是否会出现如果没有使用到的内存,系统就不会出现任何的异常,从中查看是否会有任何的缺陷。在实际的过程中,我们可以看到由于允许系统分配内存的过程中,过载的分配内存,导致出现无法执行其他的指令过程。测试代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int
main()
{
char
* p=NULL;
while
(1)
{
p=
malloc
(
sizeof
(
int
)*1000);
if
(NULL==p)
{
break
;
}
/*
下面的这一句话,保证了申请到的内存都是有效的,可被使用的,在内存分配原则中,就存在一种情况是,如果分配的内存不被使用,可以预先分配并不存在的内存,等待内存被释放,
*/
memset
(p,0x00,100);
usleep(10);
}
while
(1)
{
sleep(1);
}
return
0;
}
|
执行当前的代码之后,系统出现了异常:
~bash:fork can not allocate memory
可以说是让整个系统处于崩溃的边缘。无法执行任何的指令,从中我们了解到了这种内存分配策略的一些弊端。
本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1609334,如需转载请自行联系原作者