new/delete补充【20200429】: 补充1:new创建一维数组和二维数组 ———————————————————————————— 参考: 1】指针数组,数组指针,二级指针【https://blog.csdn.net/sinat_32602421/article/details/105296689】 2】https://www.cnblogs.com/kid971220/p/10497752.html ———————————————————————— 说明: 1】 2】申请一维数组空间: 说明:p5是int *类型的指针,指向一个5个元素的数组:类似于一下内容: int a[5]; int *p5; p5=a; 3】申请二维数组空间: 方法1:使用数组指针 方法2:使用二级指针 说明: 1】int *p1 = new int[10]; //返回的是一个指向int的指针int* 2】int (*p8)[10] = new int[2][10]; 3】 C++中用new动态创建二维数组的格式一般是这样: TYPE (*p)[N] = new TYPE [][N]; 其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。 4】 还有一种方法,可以不指定数组的列数: 5】
| |
20200429 |
new/delete补充【20200429】: —————————— 补充2:new创建结构体和类对象(结构体可看做对象) 1】创建结构体: 2】创建对象: 使用New创建对象和直接创建对象的区别: 1】new创建对象需要指针接收,一处初始化,多处使用 如: 方法1创建对象,使用完后不需要手动释放,该类析构函数会自动执行; 方法2创建对象:new申请的对象,则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。 代码:
|
C++空间申请与释放(new delete)和C的空间申请与释放(malloc free):<20200429>
1】 2】 3】 4】
5】
6】 7】C的malloc和free在C++可以使用;但是在对象空间的申请不适用,因为new和delete可以触发构造函数和析构函数,但malloc和free不可以; | |