- 論壇徽章:
- 0
|
我的機器配置是solaris5.8+1G內(nèi)存+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" ;
}
程序編譯通過,在運行時出現(xiàn)Segmentation Fault(core dump)錯誤.
但是我監(jiān)視內(nèi)存及swap的情況是swap avaliable 1375696K ,mem free 567272K.
內(nèi)存和swap足夠,程序為何報錯呢?請高手指教. |
|