曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2956|回复: 0
打印 上一主题 下一主题

new 和 delete

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-8-11 09:25:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 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 可以在分配对象时进行初始化。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-17 09:05 , Processed in 0.075548 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表