码迷,mamicode.com
首页 > 编程语言 > 详细

[64]多维数组(Multidimensional Arrays in C++(2D arrays))

时间:2020-03-21 23:23:36      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:col   内存   iostream   i++   多维数组   for   let   c++   clu   

关于具体的多维数组不赘述,但是有可能会有一个内存泄漏的问题,具体可以看代码

#include <iostream>

int main()
{
    int** a2d = new int* [50];
    for (int i = 0; i < 50; i++)
        a2d[i] = new int[50];
    
    for (int i = 0; i < 50; i++)
        delete[] a2d[i];
    delete[] a2d;
    std::cin.get();
}

如果直接删除a2d,就会导致这些指针指向的数组中的数据无法被删除,所以需要先循环释放各个数组,再释放a2d。

当然,还有一种方式

    int* array = new int[5 * 5];
    for (int y = 0; y < 5; y++)
    {
        for (int x = 0; x < 5; x++)
        {
            array[x + y * 5] = 2;
        }
    }

这样数字在内存中就是连续的。更好的cache hit。

[64]多维数组(Multidimensional Arrays in C++(2D arrays))

标签:col   内存   iostream   i++   多维数组   for   let   c++   clu   

原文地址:https://www.cnblogs.com/EvansPudding/p/12543112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!