C++(new操作符)

在 C++ 中,new 操作符用于在动态内存(heap)上为对象动态分配内存,同时会调用对象的构造函数进行初始化。它返回一个指向新分配的内存空间的指针。

new 操作符的一般语法如下:

new type
new type[expression]

其中,type 是要分配内存的数据类型,expression 是一个表示要分配的对象数量的表达式。

1. 单个对象的动态内存分配:

int *p = new int; // 动态分配一个整数的内存

上述语句将在堆上分配足够的内存以存储一个整数,并将 p 指向这块内存。

2. 数组的动态内存分配:

int *arr = new int[5]; // 动态分配一个包含5个整数的数组的内存

上述语句将在堆上分配足够的内存以存储包含5个整数的数组,并将 arr 指向这块内存。

3. 对象的动态内存分配:

class MyClass {
    // 类的定义
};

MyClass *obj = new MyClass; // 动态分配一个 MyClass 对象的内存

上述语句将在堆上分配足够的内存以存储一个 MyClass 对象,并将 obj 指向这块内存。同时,会调用 MyClass 的构造函数进行对象的初始化。

4. 动态分配后要注意释放内存:

使用 new 操作符分配的内存需要手动释放,否则可能会导致内存泄漏。释放内存使用 delete 操作符(或 delete[] 操作符,如果是数组)。

delete p;     // 释放动态分配的单个整数的内存
delete[] arr;  // 释放动态分配的整数数组的内存
delete obj;    // 释放动态分配的 MyClass 对象的内存

注意: C++11 引入了智能指针(std::unique_ptrstd::shared_ptr),它们可以更安全地管理动态内存,因为它们会在超出作用域时自动释放分配的内存,无需显式调用 delete

posted @   做梦当财神  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2017-12-07 MongoDB(课时28 group操作)
2017-12-07 MongoDB(课时27 消除重复数据)
2017-12-07 MongoDB(课时26 聚合(取的集合个数))
2017-12-07 MongoDB(课时25 地理信息索引)
2017-12-07 MongoDB(课时24 全文索引)
点击右上角即可分享
微信分享提示