我想做内存压力测试。但它不能正常工作。它已经返回结果但是它有一些关于其他东西的信息。当我使用bash shell来监视我测试的内存使用情况时,内存使用情况信息没有快速上升,它几乎没有变化。即使在ubuntu中使用top命令。我在运行名为mallocBomb01.sh的压力测试bash shell时使用监视bash shell或top命令.bash shell脚本在这里。
#!/bin/bash
i=1;
while [ $i -le 200 ]
do
./mallocBomb -i
done
bash shell脚本的结果就在这里。
...
./ malloc01.sh:line 7:105832分段错误(核心转储)./ mallocBomb -i
...
mallocBomb的c代码在这里。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <limits.h>
int main(int argc,char **argv[])
{
int count = 0;
if(argc == 1)
printf("Usage : ./mallocBomb <[infinite] -i> or ./mallocBomb <itterations>");
else
{
int i=0,k=0;
if(strcmp((const char *)argv[1],"-i") == 0)
{
while(1)
{
if(strcmp((const char *)argv[2],"-v") == 0)
{
printf("Itteration count : %d\n",count++);
}
if(calloc(1,1024) != NULL)
{
if(errno == EAGAIN)
{
printf("WARNING EAGAIN: Limit on the total number of processes has been reached\n");
}
else if(errno == ENOMEM)
{
printf("WARNING ENOMEM: There is not enough swamp space\n");
}
}
}
}
else
{
k =atoi((const char *)argv[1]);
for(i=0; i < k; i++)
{
if(strcmp((const char *)argv[2],"-v") == 0)
{
printf("Itteration count : %d\n",i+1);
}
if(calloc(1,1024) != NULL)
{
if(errno == EAGAIN)
{
printf("WARNING EAGAIN: Limit on the total number of processes has been reached\n");
}
else if(errno == ENOMEM)
{
printf("WARNING ENOMEM: There is not enough swamp space\n");
}
}
}
}
}
return 0;
}
结果显示它有一个分段错误(核心转储)。这是一个错误吗?如果没有,为什么内存使用不会上升?