C++ 二维数组内存分配及释放:避免内存泄漏
要解决上述问题,需要进行以下修改:
- 在定义二维数组
arr之前,将其初始化为NULL,并在之后为其分配内存空间。修改的代码如下:
float** arr = NULL;
arr = new float*[a];
for (int i = 0; i < a; i++) {
arr[i] = new float[b];
}
这样,就为二维数组arr的每一行分配了内存空间。
- 为了避免内存泄漏,在使用完二维数组
arr后,需要手动释放内存。可以使用以下代码释放内存:
for (int i = 0; i < a; i++) {
delete[] arr[i];
}
delete[] arr;
这将释放每一行的内存空间,然后释放行指针数组的内存。
综上所述,修改后的 storejz 函数应如下所示:
hls* storejz(int a, int b)
{
hls* hls1;
hls1 = new hls;
float** arr = NULL;
int i, j;
arr = new float* [a];
for (i = 0; i < a; i++)
{
arr[i] = new float[b];
}
cout << '请输入矩阵' << endl;
for (i = 0; i < a; i++)
{
for (j = 0; j < b; j++)
{
cin >> arr[i][j];
}
}
hls1->arr = arr;
return hls1;
}
记得在适当的时候释放内存,以避免内存泄漏和错误。
原文地址: https://www.cveoy.top/t/topic/oNc 著作权归作者所有。请勿转载和采集!