访问2D结构时程序崩溃
Program crashing when accessing 2D struct
所以我花了无数个小时试图找到这个问题的答案。我发现了一些接近它的东西,但不完全是这样,所以我想我会在这里发帖。
我正在尝试创建一个结构的2D数组。我将调用一个函数来创建结构并将值输入到结构中。这是一个可能输出的例子:
输入:int 5,int 5
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
我能够创建结构,但当我试图输入值时,我的程序不断崩溃。任何投入都会很棒!下面是我的代码。
struct values{
int mult;
float div;
};
values** create_table(int row, int col){
values** tab = new values*[row];
values* one_row = new values[col];
for (int i = 0; i < row; i++){
tab[i] = one_row;
}
return tab;
}
void set_m_values(values** tab, int row, int col){
for (int i = 0; i < row; i++){
for (int j = 0; i < col; j++){
tab[i][j].mult = (i+1)*(j+1);
}
}
}
int main() {
int row = 5;
int col = 5;
values** tab = create_table(row, col);
set_m_values(tab, row, col);
for (int i = 0; i < row; i++){
for (int j = 0; j< col; j++){
cout <<tab[0][i].mult;
}
cout <<endl;
}
return 0;
}
您的初始化是错误的
values* one_row = new values[col];
for (int i = 0; i < row; i++){
tab[i] = one_row;
这是创建一行,并将其分配给每一行。
你可能想做:
values** tab = new values*[row];
for (int i = 0; i < row; i++)
{
tab[i] = new values[col];
}
话虽如此,您确实应该使用std::array
或std::vector
。
此外,这就是导致崩溃的原因,在set_m_values
中,您有一个错误的比较:
for (int j = 0; i < col; j++){ // notice the i in there
应该是:
for (int j = 0; j < col; j++){ // replaced i with j
很可能你复制粘贴后忘记更改它。我想强调的是,你真的应该使用标准库容器,比如vector。例如,您可以有:
// with this you don't need the create_table function
std::vector< std::vector<values> > table(row, std::vector<values>(col));
p.S:你的代码中有内存泄漏,因为没有调用删除。这不是std::vector
的问题
相关文章:
- 程序崩溃并显示"std::out_of_range"错误
- 试图创建流或fopen时程序崩溃
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- DLL Made with CMake 使程序崩溃
- 程序崩溃使用boost::asio
- 调用 free() 有时会导致程序崩溃
- 邮件加密程序崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- For 循环在尝试读取数组 c++ 时程序崩溃
- 即使有 0 个错误,Getter 似乎也会使程序崩溃
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 无法访问的代码如何导致我的程序崩溃?
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- QCompleter set模型使应用程序崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 删除SDL_PollEvent时程序崩溃