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

水手一枚 2012-09-26 09:51:07
我想写一个归并排序的程序,但没想到出现这种问题,请各位前辈帮忙找一下错误。以下是我的代码:
#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);
}
}
...全文
969 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
水手一枚 2012-09-27
  • 打赏
  • 举报
回复
谢了,我是初学者啊,理解起来有难度,以后得好好学习了。
赵4老师 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
怎么看不懂啊,什么是core文件啊?还有系统提示“核心已转储”是什么意思?
[/Quote]
进程意外退出会在当前目录下产生形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb 运行程序名 core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。
水手一枚 2012-09-27
  • 打赏
  • 举报
回复
怎么看不懂啊,什么是core文件啊?还有系统提示“核心已转储”是什么意思?
赵4老师 2012-09-26
  • 打赏
  • 举报
回复
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文件的最大值,单位为区块。
水手一枚 2012-09-26
  • 打赏
  • 举报
回复
不懂啊,这需要用ulimit测试吗? 我觉得是程序写得有问题,但找不出错误。
赵4老师 2012-09-26
  • 打赏
  • 举报
回复
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。

JiMoKuangXiangQu 2012-09-26
  • 打赏
  • 举报
回复
gdb coredumpfile prog

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧