#include<iostream>
using namespace std;
//
// 动态创建一维数组 在堆区开辟连续的内存:
// 创建:
// 数据类型 * 指针名 = new 数据类型[数组长度];
// 释放:
// delete [] 指针名;
// 注意:
// 1、动态数组没有数组名,不能用sizeof关键字
// 2、可以用数组表示法和指针表示法两种方式使用动态数组
// 3、必!须!使用delete[] 释放new[]申请出来的内存(不能使用delete )!!!!
// 4、不!要!用delete[] 去释放 不是new[]分配的内存 (c用的是malloc申请,free()释放) !!!
// 5、不要用delete[]重复释放已经被释放的内存,那样相当于操作野指针
// 6、对空指针用delete[]是安全的,用完指针之后应该将指针置空,p = nullptr
// 7、如果内存不足,调用new会产生异常,导致程序中止;如果在new关键字后面加(std::nothrow)选项,
// 则返回nullptr,不会产生异常。
//
// 为什么用delete[]释放数组的时候,不需要指定数组的大小?因为系统会自动跟踪已分配数组的内存。
//
//
//
int main(void)
{
int* p = new (std::nothrow)int[10];
if (p == nullptr) {
cout << "申请内存失败" << endl;
}
else {
for (int i = 0; i < 10; i++)
{
p[i] = i;
cout << p[i] << endl;
}
}
delete[] p;
p = nullptr;
return 0;
}