求助大佬 一个堆上的二维数组出问题了

motjio 2020-05-09 10:45:00
求助大佬 一个堆上的二维数组出问题了
可能是数组大小问题
int **p;
p=new int*[n+1];
for(int i=0;i<n+1;i++)
{
p[i]=new int[n+1];
p[i][0]=0;
}
调试的时候在上面的for循环出问题。
n为100000时就闪退了,在100-10000内都是正常的。。





下面是程序源码
#include<iostream>
#include<fstream>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
void Lcs(char str0[],char str1[],int n,bool flag)
{
int **p;
p=new int*[n+1];
for(int i=0;i<n+1;i++){
p[i]=new int[n+1];
p[i][0]=0;
}
for(int i=0;i<n+1;i++)p[0][i]=0;
//填表
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{

if(str0[i-1]==str1[j-1]){p[i][j]=p[i-1][j-1]+1;}
else {
p[i][j]=max(p[i-1][j],p[i][j-1]);
}
}
}
}
int main()
{
char *str0,*str1;
str0=new char[1000000];
str1=new char[1000000];
srand(time(NULL));
for(int i=0;i<1000000;i++)
{
char c=65+rand()%26;
str0[i]=c;
}
for(int i=0;i<1000000;i++){
char c=65+rand()%26;
str1[i]=c;
}
Lcs(str0,str1,100000,0);
system("pause");
}

...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
motjio 2020-05-10
  • 打赏
  • 举报
回复
感谢各位大佬的建议,问题已解决
棉猴 2020-05-10
  • 打赏
  • 举报
回复
	try
	{
		for (int i = 0; i < n + 1; i++) {
			p[i] = new int[n + 1];
			p[i][0] = 0;
		}
	}
	catch (const std::bad_alloc&)
	{
		return;
	}
Simple-Soft 2020-05-10
  • 打赏
  • 举报
回复
如果你内存足够大,就改成64位程序,如果内存不够,就只能存文件或者一部分一部分读入了。
motjio 2020-05-10
  • 打赏
  • 举报
回复
引用 2 楼 真相重于对错 的回复:
你是要开 100000乘100000 的int 矩阵 约需要 40G的内存。。。。
那这种超大容量的数组要怎末存放啊。。。
motjio 2020-05-10
  • 打赏
  • 举报
回复
引用 1 楼 Simple-Soft 的回复:
崩溃在哪一行?
就是在这个for循环 for(int i=0;i<n+1;i++) { p[i]=new int[n+1]; p[i][0]=0; } 之前我把它写在一行,就是下面这样,到这一行就出错; for(int i=0;i<n+1;i++){p[i]=new int[n+1]; p[i][0]=0;} 我感觉应该是内存问题。
真相重于对错 2020-05-10
  • 打赏
  • 举报
回复
你是要开 100000乘100000 的int 矩阵 约需要 40G的内存。。。。
Simple-Soft 2020-05-09
  • 打赏
  • 举报
回复
崩溃在哪一行?

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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