曲径通幽论坛

标题: new 和 delete [打印本页]

作者: beyes    时间: 2011-8-11 09:25
标题: new 和 delete
在 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 = 100.00 + i;

        for (i = 0; i < 10; i++)
                cout << p << " ";

        cout << '\n';

        delete [] p;

        return 0;
}

注意上面在释放数组内存时不需要指定数组的大小。

new 的优点:
new 可以自动计算数据类型大小,因此不需要使用运算符 sizeof,这样不但可以减少代码量,还可以防止分配错误数量的内存。
new 可以自动返回正确的指针类型,因此无需使用类型转换。
此外,使用 new 可以在分配对象时进行初始化。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2