gpt4 book ai didi

c++ - 中止(核心转储)

转载 作者:行者123 更新时间:2023-11-28 07:35:48 30 4
gpt4 key购买 nike

./product -rows 4 -cols 4

我收到这个错误:

terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Abort (core dumped)

这是我的代码..

#include <iostream>
#include <stdlib.h>

using namespace std;


int **create_array(int rows, int cols){
int x, y;
int **array = new int *[rows];
for(int i = 0; i < cols; i++){
array[i] = new int[cols];
}
array[x][y] = 1+rand()%100;
cout << array << endl;
return array;
}
int main(int argc, char *argv[]){
int rows, cols;
int **my_array = create_array(rows, cols);

return 0;
}

最佳答案

我没看到你在哪里初始化变量 rowscolsmain .

一旦你解决了这个问题,xy里面create_array被同样的问题困扰。如果对象是用伪随机值填充数组,则不需要 xi已经在你的二维数组中前进(顺便说一下,其基于指针 vector 的表示被称为 Iliffe vector )。你只需要介绍一些j它遍历数组的每一行。这j将进入嵌套在现有循环内的循环:

for(int i = 0; i < rows; i++){
array[i] = new int[cols]; // allocate row
for (int j = 0; i < cols; j++) // loop over it and fill it
array[i][j] = 1 + rand()%100;
}

还有一个问题是你的主循环,它应该分配数组的,正在循环i来自 0i < cols .这应该是 i < rows .在循环内部,您分配了一个大小为 [cols] 的行, 哪个是对的。如果你仔细看,在我上面的片段中,我做了更正。

关于c++ - 中止(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16804880/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com