- 论坛徽章:
- 0
|
我的机器配置是solaris5.8+1G内存+1609M swap,
程序中,我分配了894*70*3001=187802580个float单元,共计716.4M.
程序如下:
#include <stdlib.h>;
#include <string.h>;
#include <stddef.h>;
#include <stdio.h>;
main()
{
float * p;
p=(float *)malloc(894*70*3001);
printf("pass1\n" ;
memset(p,0.0,894*70*3001);
printf( "p=[%f],p=[%p]\n",p,p);
for(int i=0;i<894*70*3001;i++)
{
if(i==1||i==2||i==10||i==100||i==1000||i%1000==0)
printf("%d\n",i);
p=(float)i/100000;
}
printf("pass2\n" ;
free(p);
printf( "p=[%f],p=[%p]\n",p,p);
printf("pass3\n" ;
p=NULL;
printf( "p=[%f],p=[%p]\n",p,p);
printf("pass4\n" ;
}
程序编译通过,在运行时出现Segmentation Fault(core dump)错误.
但是我监视内存及swap的情况是swap avaliable 1375696K ,mem free 567272K.
内存和swap足够,程序为何报错呢?请高手指教. |
|