场景说明
调试了分配内存的策略,看看是否会出现如果没有使用到的内存,系统就不会出现任何的异常,从中查看是否会有任何的缺陷。在实际的过程中,我们可以看到由于允许系统分配内存的过程中,过载的分配内存,导致出现无法执行其他的指令过程。测试代码如下:
#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
可以说是让整个系统处于崩溃的边缘。无法执行任何的指令,从中我们了解到了这种内存分配策略的一些弊端。