4 CPP用new动态创建一维数组

CPP用new动态创建一维数组

普通数组在栈上分配内存,栈很小,如果需要存放更多的元素,必须在堆上分配内存。

动态创建一维数组的语法 : 数组类型 *指针=new 数据类型[数组长度];

释放一维数组的语法 delete[] 指针;

注意:

1 动态创建的数组没有数组名,不能用sizeof运算符;

2 可以用数组表示法和指针表示法两种方式使用动态创建的数组;

3 必须使用delete[] 来释放动态数组的内存(不能只用delete);

4 不要用delete[]来释放不是new[]分配的内存,(C语言的malloc()函数也可以动态分配内存,该方法分配的内存,需要用free()来释放,不能用delete。还有就是如果指针指向的地址是栈上的变量,也就是普通变量的地址,也不能用delete来)

5 不要用delete[]释放同一内存块两次(第一次delete释放内存后,不会把指针置空,第二次等同于操作野指针);

6 对空指针用delete[]是安全的(释放内存后,应该把指针置为nullptr,防止误操作);

7 声明普通数组的时候,数组长度可以用变量,相当于在栈上动态创建数组,且不需要释放。在实际开发中数组很小,在栈上分配也是可以的,很安全 很方便。

8 如果内存不足,调用new会产生异常,导致程序终止;如果在new关键字后面加上(std::notthrow)选项,则返回nullptr,不会产生异常。

9 为什么用delete[]释放数组的时候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值