【C++从0到1】60、C++中用new动态创建一维数组

C++从0到1全系列教程

1、用new动态创建一维数组

  • 普通数组在栈上分配内存,栈很小;如果需要存放更多的元素,必须在堆上分配内存。
  • 动态创建一维数组的语法:数据类型 *指针=new 数据类型[数组长度];
  • 释放一维数组的语法:delete [] 指针;

注意:

  • 动态创建的数组没有数组名,不能用sizeof运算符。
  • 可以用数组表示法和指针表示法两种方式使用动态创建的数组。
  • 必须使用delete[]来释放动态数组的内存(不能只用delete)。
  • 不要用delete[]来释放不是new[]分配的内存。
  • 不要用delete[]释放同一个内存块两次(否则等同于操作野指针)。
  • 对空指针用delete[]是安全的(释放内存后,应该把指针置空nullptr)。
  • 声明普通数组的时候,数组长度可以用变量,相当于在栈上动态创建数组,并且不需要释放。
  • 如果内存不足,调用new会产生异常,导致程序中止;如果在new关键字后面加(std::nothrow)选项,则返回nullptr,不会产生异常。
  • 为什么用delete[]释放数组的时候,不需要指定数组的大小?因为系统会自动跟踪已分配数组的内存。

2、示例代码

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。

int main()
{
	int *arr=new int[8];          // 创建8个元素的整型数组。

	for (int ii = 0; ii < 8; ii++)
	{
		arr[ii] = 100 + ii;                                                                  // 数组表示法。
		cout << "arr[" << ii << "]=" << *(arr + ii) << endl;        // 指针表示法。
	}

	delete[]arr;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值