gpt4 book ai didi

c++ - 分配二维数组时的内存管理

转载 作者:行者123 更新时间:2023-11-30 00:49:16 25 4
gpt4 key购买 nike

我使用以下代码分配了一个二维数组:

// Dynamic allocation
int **matrix=new int*[n];
for(int i=0;i<n;i++)
{
matrix[i]=new int[n];
}

这很好用。

  • 首先我们分配一个整型指针数组。
  • 然后我们进一步分配每个较早的指针指向n 整数的内存位置。这将创建我们的二维数组。

我知道动态分配数组的析构函数应该是这样的:

~SquareMatrix()
{
delete [] OneDarray;
}

重点在[],因为如果不写,只会删除数组的第一个元素。

基于类似的理由,我想我需要放置两次 [] 以便删除整个二维数组,例如,

删除[][]矩阵;

但这不起作用并给出编译时错误。

正确的做法是什么?

最佳答案

for(int i=0;i<n;i++)
{
delete [] matrix[i];
}

delete [] matrix

您需要删除每个内部数组,然后删除数组。

正如评论中所建议的那样。一种更安全的方法是使用标准容器,例如 std::vector。然后你可以做这样的事情:

std::vector<std::vector<int>> matrix;

这会给你一个二维数组,但你不必处理清理工作。

关于c++ - 分配二维数组时的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28649952/

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