在 C++ 中定义了 new 和 delete 这两个运算符分别用来实现动态分配和释放,它们的作用类似于 C 中的 malloc() 和 free() 函数。
new 成功时返回一个指向分配内存空间的指针,失败时会抛出一个异常。
示例1:分配一个整数指针
[C++] 纯文本查看 复制代码 int *p;
p = new int; //为 int 类型分配内存
...
delete p; //释放内存
示例2:对动态分配内存进行初始化
#[C++] 纯文本查看 复制代码 include <iostream>
using namespace std;
int main()
{
int *p;
p = new int (99); //使用 99 进行初始化
cout << *p;
delete p;
return 0;
}
示例3:分配数组内存
[C++] 纯文本查看 复制代码 #include <iostream>
using namespace std;
int main()
{
double *p;
int i;
p = new double [10];
for (i = 0; i < 10; i++)
p[i] = 100.00 + i;
for (i = 0; i < 10; i++)
cout << p[i] << " ";
cout << '\n';
delete [] p;
return 0;
}
注意上面在释放数组内存时不需要指定数组的大小。
new 的优点:
new 可以自动计算数据类型大小,因此不需要使用运算符 sizeof,这样不但可以减少代码量,还可以防止分配错误数量的内存。
new 可以自动返回正确的指针类型,因此无需使用类型转换。
此外,使用 new 可以在分配对象时进行初始化。 |