关于具体的多维数组不赘述,但是有可能会有一个内存泄漏的问题,具体可以看代码
#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。
原文链接: https://www.cnblogs.com/EvansPudding/p/12543112.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/336689
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!