写这个是为了方便复习,放点参考文章和自己的问题.
程序内存的知识:
内存分配的基本写法(讲的比较基础):
https://blog.youkuaiyun.com/qq_40416052/article/details/82493916
new和malloc的区别(进一步了解new):
https://blog.youkuaiyun.com/cherrydreamsover/article/details/81022039
https://www.runoob.com/note/26635
delete 与 delete[] 区别:
如果ptr代表一个用new申请的内存返回的内存空间地址,即所谓的指针,那么:
-
delete ptr -- 代表用来释放内存,且只用来释放ptr指向的内存。
-
delete[] ptr -- 用来释放ptr指向的内存,!!还逐一调用数组中每个对象的 destructor!!
对于像 int/char/long/int*/struct 等等简单数据类型,由于对象没有 destructor,所以用 delete 和 delete [] 是一样的!但是如 果是C++ 对象数组就不同了!
三维数组:
int ***array;
// 假定数组第一维为 m, 第二维为 n, 第三维为h
// 动态分配空间
array = new int **[m];
for( int i=0; i<m; i++ )
{
array[i] = new int *[n];
for( int j=0; j<n; j++ )
{
array[i][j] = new int [h];
}
}
//释放
for( int i=0; i<m; i++ )
{
for( int j=0; j<n; j++ )
{
delete[] array[i][j];
}
delete[] array[i];
}
delete[] array;