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

//把两个数组中的数以从小到大的的顺序放在第三个数组中
#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;

}

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缓冲区造成的,每次结束输入后清空一下缓冲就可以了。

追问

还是这样的问题。。。

温馨提示:内容为网友见解,仅供参考
无其他回答

我这个c++程序在输入的数字多的时候就弹出程序已停止工作的一个窗口,请...
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缓冲区造成的,每次结束输入后清空一下缓冲就可以了。

为什么C++程序运行 我一输入数字 直接就关闭了
你一闪即逝的问题,只要在main()的return 0;之前加一句system("pause");【只在win32下生效】,这样执行完之后就会等待了,知道有键盘键被按下。

C++的程序运行成功无错误 但进入用户界面后输入一个数字 但一按回车键...
那是因为你没有让程序停止,输入完之后就退出程序了,就看不到执行结果了,在main函数最后加一个getchar();就好了,这句话的作用是让程序在执行到这句话的时候停止并等待用户输入一个字符,就是只有你再输入一个字符的时候程序才能结束。这样你就能看到执行结果了。

C++做的操作系统进程调度。程序运行到一半按enter无法运行,就输入那 ...
如果你输入 0-4的数字还运行不了的话, 就是程序有问题

请看这个程序.为什么调试的时候键入数字,回车之后,命令提示符自动关闭...
在main()退出前加上getchar()是可行了,这个就是等待用户在输入一个字符,系统一直等待 不过还有更好的方法:在推出前加上system("pause");这个可以让系统停留在cmd上,好了,方法给你了,记著给分哦!其实好多编译器都是已经自动加上这个了的 看来楼主是刚学习C++,呵呵,我以前也遇到过这些问题...

用C++写的一个判断回文数的程序,当输入数值超过十位数时,运行就出错...
因为你定义的输入值为 int m,定义的为整型,十位数字已经超过了整型的范围。改成字符串按照你函数的定义还是需要转成整型,所以你只能将m定义成浮点型。

...一个程序运行时提示输入一个数字,再把这个数字显示出来。_百度知 ...
include<iostream> int main(){ \/\/要求编写一个程序运行时提示输入一个数字,再把这个数字显示出来。int a;std::cout<<"请输入一个数字: ";\/\/代码中输入了中文的分号 std::cin>>a;return a; \/\/要显示不是使用 return a; 要改成 std::cout << a << endl; return 0;} ...

C\/C++语言中,在不确定用户输入数据个数的情况下来控制循环结束?_百度...
可以参考下面的代码:int main(){ int a[100],i=0,ch=0;printf("请输入一组整形数据(不超过100个):");do{ scanf("%d",&a[i++]);ch=getchar();}while(ch!='\\n');for(ch=0;ch

C++程序下面的程序运行为什么多出了莫名其妙的数字
没看你的程序,但冥冥之中觉得可能是你内存没有初始化或者是结尾没加界定符导致的

C++任意输入在运行时怎么样退出输入
这个要用c++专用的输入结束符Ctrl+z,按完之后再按两次回车就能跳出了

相似回答
大家正在搜