首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

提示核心已转储,但没找出来(ubuntu上)

2012-10-10 
提示核心已转储,但没找出来(ubuntu下)我想写一个归并排序的程序,但没想到出现这种问题,请各位前辈帮忙找一

提示核心已转储,但没找出来(ubuntu下)
我想写一个归并排序的程序,但没想到出现这种问题,请各位前辈帮忙找一下错误。以下是我的代码:
#include<iostream>
#include<cstdio>
using namespace std;
void merge(int *,int,int,int);
void merge_sort(int *,int);
int main()
{
int i,n;
while((scanf("%d",&n))!=-1 && n>0)
{
int *data=new int[n];
for(i=0;i<n;++i)
scanf("%d",data+i);
merge_sort(data,n);
for(i=0;i<n;++i)
printf("%d ",data[i]);
printf("\n");
delete []data;
}
return 0;
}
void merge(int *A,int p,int q,int r)
{
int *bp=new int[r-q+1];
int i,j,k;
i=p,j=q+1,k=0;
while(i<=q && j<=r)
{
if(A[i]<=A[j])
bp[k++]=A[i++];
else
bp[k++]=A[j++];
}
if(i==q+1)
while(j<=r)
bp[k++]=A[j++];
else
while(i<=q)
bp[k++]=A[i++];
k=0;
for(i=p;i<=r;)
A[i++]=bp[k++];
delete []bp;
}
void merge_sort(int *A,int n)
{
int i,s,t=1;
while(t<n)
{
s=t; t=2*s; i=0;
while(i+t<n)
{
merge(A,i,i+s-1,i+t-1);
i+=t;
}
if(i+s<n)
merge(A,i,i+s-1,n-1);
}
}

[解决办法]
ulimit

功能说明:控制shell程序的资源。

语  法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

参  数:
-a  显示目前资源限制的设定。 
-c <core文件上限>  设定core文件的最大值,单位为区块。 
-d <数据节区大小>  程序数据节区的最大值,单位为KB。 
-f <文件大小>  shell所能建立的最大文件,单位为区块。 
-H  设定资源的硬性限制,也就是管理员所设下的限制。 
-m <内存大小>  指定可使用内存的上限,单位为KB。 
-n <文件数目>  指定同一时间最多可开启的文件数。 
-p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。 
-s <堆叠大小>  指定堆叠的上限,单位为KB。 
-S  设定资源的弹性限制。 
-t <CPU时间>  指定CPU使用时间的上限,单位为秒。 
-u <程序数目>  用户最多可开启的程序数目。 
-v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。 


[解决办法]
ulimit命令可以设置不产生core文件。
ulimit

功能说明:控制shell程序的资源。

语  法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

参  数:
-a  显示目前资源限制的设定。
-c <core文件上限>  设定core文件的最大值,单位为区块。

热点排行