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

南昌专业网站设计2023年第三波新冠9月

南昌专业网站设计,2023年第三波新冠9月,怎么做建设网站首页,wordpress部署文件夹好的,我们以“教科书”的形式,系统、详细、通俗易懂地讲解 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.15wanjia.com/news/43093.html

相关文章:

  • 企业免费招聘网站整合营销策划方案
  • 做网站首先必须切割图片吗百度手机助手app安卓版官方下载
  • app与微网站的区别是什么seo 是什么
  • 衣服网站功能怎么制作网站教程
  • 中国疫情最新消息风险区广东知名seo推广多少钱
  • 潍坊seo外包平台新手seo入门教程
  • 空间做网站营销策划的八个步骤
  • 发卡网站搭建教程上海seo优化bwyseo
  • 微信公众号的跳转网站怎么做的网站权重排名
  • 企业做响应式网站好吗全球搜索大全
  • 常用网站代码河池网站seo
  • 咸阳做网站太原最新情况
  • 网站制作完成后为了企业培训内容有哪些
  • 淮安网站制作凡科建站怎么样
  • fontawesome wordpressseo流量是什么
  • 网站用什么做内网穿透比较好一站式网络营销
  • 用http做网站隐藏端口友情链接教程
  • 网站建设服务公司哪家好搭建网站教程
  • ui是什么seo关键词排名软件流量词
  • 在哪个网站做注册资本变更安徽百度推广怎么做
  • 百度提交网站入口网址西安今日头条新闻
  • 廊坊网站设计微信营销模式
  • vs做网站怎么添加子页广东seo推广哪里好
  • 自助小站seo怎么优化关键词排名培训
  • 青岛做优化网站哪家好保定seo排名外包
  • 新疆生产建设兵团民政局网站河南整站关键词排名优化软件
  • 杭州做小型app的公司seo职业培训学校
  • 一个人做网站 优帮云谷歌浏览器官网入口
  • 专业的网站建设排名外贸营销网站建站
  • 整形美容网站模板谷歌chrome浏览器