gpt4 book ai didi

c++ - 打印2D动态数组C++函数

转载 作者:行者123 更新时间:2023-12-02 10:07:43 26 4
gpt4 key购买 nike

我一直在努力解决一个问题,我必须构建一些功能,这些功能必须创建,填充和打印2D动态数组。

#include <string>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <fstream>

using namespace std;

void create_and_fill(int **T, int m, int n)
{
T = new int *[m];
for (int i = 0; i < m; i++)
{
T[i] = new int[n];
}

for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
T[i][j] = -100 + rand() % 201;
}
}
}

void print(int **T, int m, int n )
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << T[i][j] << "\t";
}
cout << endl;
}
}

int main()
{
const int m = 5;
const int n = 6;

int **A = NULL;
create_and_fill(A, m, n);
print(A, m, n);

int **B = NULL;
create_and_fill(B, m, n);

return 0;
}

创建和填充效果很好,如果我在create_and_fill函数中放入一些提示,它也会打印数组。但是,如果我尝试使用打印功能进行打印,则关于禁止 Action 会有一些异常(exception)。
我只是不明白为什么有些功能可以做到而另一些功能不能做到以及如何解决。谢谢!

最佳答案

问题是您要按值传递指针。您分配并填充数组然后泄漏,因为所做的更改未存储在传递给该函数的原始指针中。如果要修改指针本身,则需要通过引用传递它:

void create_and_fill(int **&T, int m, int n)

您不会在代码中的任何地方删除该数组,因此会发生内存泄漏。请注意,每个 new都应带有 delete

关于c++ - 打印2D动态数组C++函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59337799/

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