当前位置: 首页 > news >正文

网站开发培训哪个好瑞昌市环保局网站建设

网站开发培训哪个好,瑞昌市环保局网站建设,飞翔时代网站建设,网站设计 尺寸好的,我们以“教科书”的形式,系统、详细、通俗易懂地讲解 C 中的 new 关键字。讲解将从最基础的概念出发,一步步深入,覆盖从基本使用到高级特性,并配有示例和小结,方便你系统学习与理解。 📘 C…

好的,我们以“教科书”的形式,系统、详细、通俗易懂地讲解 C++ 中的 new 关键字。讲解将从最基础的概念出发,一步步深入,覆盖从基本使用到高级特性,并配有示例和小结,方便你系统学习与理解。


📘 C++ 教程:new 关键字详解

🧠 第1章 什么是 new

1.1 背景知识

在 C++ 中,内存分为多种区域,如:

  • 栈区(stack):函数调用时自动分配内存,函数返回后自动释放。速度快,但大小有限。
  • 堆区(heap):程序运行时动态分配内存,由程序员手动申请和释放。灵活但易出错。

C++ 提供了 new 关键字用于在堆区动态分配内存。


🧩 第2章 new 的基本用法

2.1 分配单个变量

int* p = new int;     // 分配一个 int,未初始化
*p = 42;              // 手动赋值

也可以直接初始化:

int* p = new int(42); // 分配一个 int 并初始化为 42

释放内存:

delete p;
p = nullptr;          // 避免野指针

✅ 小结:

操作语法说明
分配内存new 类型返回指向该类型的指针
初始化变量new 类型(值)直接给变量赋初值
释放内存delete 指针必须手动释放堆内存

🧱 第3章 分配数组

3.1 动态数组

int* arr = new int[5];      // 分配 5 个 int 元素
arr[0] = 1; arr[4] = 5;

释放数组:

delete[] arr;               // 必须使用 delete[] 释放数组
arr = nullptr;

🚨 注意:

使用 delete 而不是 delete[] 会导致 未定义行为(UB),特别是当数组中有类对象时。


🧩 第4章 分配类对象

4.1 分配一个对象

class Person {
public:Person(const std::string& name) {std::cout << "Constructor called for " << name << "\n";}~Person() {std::cout << "Destructor called\n";}
};Person* p = new Person("Alice");   // 自动调用构造函数
delete p;                          // 自动调用析构函数

4.2 分配对象数组

Person* arr = new Person[2] { {"Tom"}, {"Jerry"} };
delete[] arr;  // 自动调用每个对象的析构函数

🔍 第5章 new 背后的原理(简要)

5.1 new 是什么?

void* operator new(size_t size);
  • 实际调用的是 operator new 函数,它返回一块足够大的堆内存。
  • new 后还会自动调用构造函数。
  • 对应的 delete 调用的是 operator delete 并自动调用析构函数。

🔧 第6章 自定义 new 和 delete

6.1 重载 new/delete(类级别)

class MyClass {
public:void* operator new(size_t size) {std::cout << "Custom new\n";return ::operator new(size); // 调用全局 new}void operator delete(void* ptr) {std::cout << "Custom delete\n";::operator delete(ptr);      // 调用全局 delete}
};

6.2 使用示例

MyClass* obj = new MyClass;  // 输出:Custom new
delete obj;                  // 输出:Custom delete

🧼 第7章 注意事项和陷阱

问题描述
内存泄漏没有调用 delete,导致堆空间被占用无法释放。
野指针删除对象后未将指针设为 nullptr,再访问会出错。
重复释放连续调用 delete 可能导致崩溃。
new / delete 不匹配new[] 必须配对 delete[]new 必须配对 delete

🚀 第8章 C++11/17 中的新特性(现代写法)

现代 C++ 推荐使用智能指针,自动管理内存,避免手动 new/delete

#include <memory>std::unique_ptr<int> ptr = std::make_unique<int>(42); // 自动释放,无需 delete

智能指针更安全、更简洁,是现代 C++ 的推荐做法。


📚 第9章 总结回顾

内容示例说明
分配单个变量int* p = new int(5);动态分配并初始化
分配数组int* arr = new int[10];使用 new[]
类对象Person* p = new Person();自动调用构造和析构
自定义行为重载 operator new用于调试或性能优化
智能指针std::make_unique<T>()推荐的现代方式

如你有兴趣,我还可以继续写出进阶专题,例如:

  • new 分配失败时的处理(nothrow 版本)
  • 对比 malloc/freenew/delete
  • 与 placement new(定位 new)有关的高级应用
  • 对 STL 中 allocator 的底层 new 调用原理分析

是否需要我继续扩展?你可以指定你想深入哪一块内容 😊

http://www.yayakq.cn/news/931213/

相关文章:

  • 出口家具东莞网站建设莱芜摩托车网站
  • 服务器网站建设公司注册在哪里合适
  • 中企动力做网站5个月了快速排名优化系统
  • 发外链的论坛网站什么颜色做网站好看
  • 电商网站建设济南建网站北京建设银行网站首页
  • 服装网站建设准备wordpress发布地址
  • 网站 经营性鞍山网站制作云端
  • 做网站好处网上做宣传的网站
  • 做外贸电商网站有哪个wordpress搭建条件
  • cad外包网站知名网站制作案例
  • 做淘宝客网站能赚到钱吗备案域名租用
  • 如何在网站上做免费广告怎么制作seo搜索优化
  • 做网站余姚立水桥大型网站建设
  • linux做网站教程百度网站标题优化
  • 个人网站用什么域名网站栏目页如何做
  • jsp网站开发实例标题栏wordpress木马乐主题
  • 公司企业建站wordpress目录检索
  • 百度收录个人网站是什么怎么做北京网络营销定制
  • 成都网站建设:义乌创源网站建设
  • 口红机网站怎么做的电子购物网站设计
  • 台州网站设计公司网站哔哩哔哩网站分析
  • 自助建站免费申请个人网页给我一个免费网站吗
  • 怎么自己做网站appWordPress双语菜单
  • 如何为产品做网站wordpress可视化布局
  • 网站建设系统 招标wordpress 虎嗅网
  • 网站设计论文如何查找高权重网站
  • wordpress 微信 商城模板网站搜索引擎优化诊断
  • 在哪个网站做外贸生意好网站移动页面怎么做的
  • 企业内部网站wordpress子站共享用户名
  • 南阳专业做网站微信公众号的模板网站