我这个c++程序在输入的数字多的时候就弹出程序已停止工作的一个窗口,请问是不是在内存分配上出现问题了

//把两个数组中的数以从小到大的的顺序放在第三个数组中#include<stdlib.h>#include<iostream>usingnamespacestd;int*... //把两个数组中的数以从小到大的的顺序放在第三个数组中
#include<stdlib.h>
#include<iostream>
using namespace std;
int *initialise(char x,int m)
{
int i,*asd;
asd=new int[m]; //用动态分配内存方式为数组a开辟空间
cout<<"请输入数组"<<x<<"中的数字:";
for(i=0;i<m;i++)
cin>>asd[i];
return asd;
}
int *safe(int m,int n,int *a,int *b)
{
int k,*add;
add=new int(m+n);
for(k=0;k<m+n;k++) //将数组a与数组b中的数字存放在数组c中
{
if(k<m)
{
add[k]=a[k];
}
else
{
add[k]=b[k-m];
}
}

return add;
}
void sort(int m,int n,int *c)
{

int i,k,t=0;
for(i=0;i<m+n-1;i++)
{
for(k=i+1;k<m+n;k++)
{
if(c[i]>c[k])
{
t=c[k];
c[k]=c[i];
c[i]=t;
}
}
}
}
int main()
{
int *a,*b,*c;
int m,n,i;
char x='a';

cout<<"请输入数组a中的个数:";
cin>>m;
a=initialise(x,m);

cout<<"请输入数组b中的个数:";
cin>>n;
x='b';
b=initialise(x,n);
c=safe(m,n,a,b);
sort(m,n,c);
cout<<"数组c:";

for(i=0;i<m+n;i++)
cout<<c[i]<<" ";
cout<<endl;

return 0;

}
展开
 我来答
bhtzu
2014-07-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4203万
展开全部
int *initialise(char x,int m)
{
int i,*asd;
asd=new int[m];      
    cout<<"请输入数组"<<x<<"中的数字:";
for(i=0;i<m;i++)
cin>>asd[i];
cin.sync(); //清空输入缓冲区
return asd;
}

不是内存分配的问题,是cin缓冲区造成的,每次结束输入后清空一下缓冲就可以了。

追问

还是这样的问题。。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式