c++ - 动态一维和二维数组 C++ 崩溃
问题描述
我已经动态分配了一维数组 int *x 和二维数组 int **y。我试图显示由用户输入的长度确定的动态 1D 和 2D 数组的总和。对于 1D 数组的长度 5 和 10,以及 2D 数组的长度 3,5 和 6,7,我必须运行该程序两次。它正在崩溃并且没有在控制台上显示任何总和。请帮忙!
#include <iostream>
using namespace std;
int main()
{
float sum = 0.0;
float sum2 =0.0;
float sum3 = 0.0; //1d array length 10
//1d array dynamic allocation
//2d array dynamic allocation
int length; //user length for 2d array, 5
int length2 = 3; //length for 2d array, 3
float oneArray; //length for 1d array
float oneArray2; // 1D array
int length1;
float sum4=0.0;
cout << "Enter dimensions " << endl;
cin >> length >> oneArray2;
cout << "Enter dimensions for 2d array " << endl;
cin >> length2 >> oneArray;
int *x = new int[oneArray2]; //single
int **y = new int* [length2]; //creates array
for(int i= 0; i < length; i++) //initializing 2d array
for(int j =0; j < length2; j++)
{
y[i][j] = i*j;
}
//initialize for 1d array
for(int l=0; l < oneArray2; l++)
{
x[l] = l;
}
for(int i= 0; i < length; i++) // allocating for 2d array
{
y[i] = new int[5];
}
for(int i=0; i< oneArray2; i++)
{
sum = sum + x[i];
cout << sum;
}
for(int k=0; k < length1; k++){
sum3 = sum3 + x[k];
cout << sum3;
}
for(int i= 0; i < length; i++) //initializing
for(int j =0; j < length2; j++)
{
sum2 = sum2 + y[i][j];
cout << sum2;
}
for(int i=0; i < 6; i++)
for(int j=0; j < 7; j++)
{
sum4 = sum4 + y[i][j];
cout << sum4;
}
for(int i=0; i < length; i++)
for(int j=0; j < length2; j++)
{
delete[] y[i][j]; //error message here too
}
for (int i=0; i < oneArray2; i++)
delete[] y[i];
return 0;
}
解决方案
首先在初始化二维数组之前为它分配内存,而不是相反
第二
为二维数组释放内存的正确方法是
for(int i=0; i < length; i++)
//first you deallocate every row y[i]
delete [] y[i];
delete [] y;
对于一维数组
delete[] x;
推荐阅读
- javascript - 在jQuery中将localStorage数据更改为html列表标签
- java - 未在 OpenGL ES 3.0 中渲染的无纹理四边形
- apache-flink - Flink 如何动态添加第三方依赖?
- kubernetes - 如何获取一堆短期 Kubernetes 作业的指标
- css - 如何解决 Google Search Console 中“可点击元素靠得太近”的问题
- git - 如何对他人的回购大师提出拉取请求?(已创建新分支)
- ios - SwiftUI:如何调整大小以适应 Button 以展开以填充 VStack 或 HStack 父视图?
- c++ - C++ RapidJson 帮助反序列化数组对象
- sql - sql中基于传输的时差逻辑
- r - 计算按列数分组的平均值