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

网站策划教程在百度上怎么打广告

网站策划教程,在百度上怎么打广告,工程建设的基本内容,论坛网页制作int main() {int *p new int[5]; // 分配包含5个整数的数组内存// 初始化数组元素for (int i 0; i < 5; i) {p[i] i * 10;}// 试图使用 delete p; 来释放数组内存delete p;delete[] p;// 打印数组元素for (int i 0; i < 5; i) {std::cout << "p[" &l…
int main() {int *p = new int[5]; // 分配包含5个整数的数组内存// 初始化数组元素for (int i = 0; i < 5; i++) {p[i] = i * 10;}// 试图使用 delete p; 来释放数组内存delete p;delete[] p;// 打印数组元素for (int i = 0; i < 5; i++) {std::cout << "p[" << i << "] = " << p[i] << std::endl;}return 0;
}

代码如上,在delete p;的时候会发生什么问题,又是什么原因导致的?

首先,需要知道delete在底层都做了什么:

  1. 调用析构函数:如果 p 指向一个对象(而不是基本数据类型的数组),C++ 运行时将调用这个对象的析构函数。对于基本数据类型(如 int、float 等)或者数组,析构函数不会被调用,因为它们没有析构函数。

  2. 内存回收delete 操作将释放 p 指向的内存块。这块内存之后可能被操作系统回收,或者留待将来重新分配。

  3. 清理内部管理信息:C++ 运行时维护了一些内部数据结构来管理动态分配的内存。delete 操作将更新这些数据结构,标记相应的内存块为“可用”

而int *p = new int[5];中的p是指向该数组首地址的指针,如果你是用delete p;其实只是做了:

        1. 删除了p这个对象

        2. 回收p所指向内存(数组首个元素)

        3. 清理内部管理信息

所以,数组剩下的元素是没有被清理回收的,我用ide输出了结果,发现delete p的结果如下:

p[0] = 1490466881
p[1] = 5
p[2] = -720962155
p[3] = 305593618
p[4] = 40

都是一些奇怪的值,也能证明刚才提到的delete p所发生的的事情。

如果你分配了数组,要进行释放,使用delete[] p;  p = nullptr;如下:

int main() {int *p = new int[5]; // 分配包含5个整数的数组内存// 初始化数组元素for (int i = 0; i < 5; i++) {p[i] = i * 10;}delete[] p;p = nullptr;// 打印数组元素for (int i = 0; i < 5; i++) {std::cout << "p[" << i << "] = " << p[i] << std::endl;}return 0;
}

那delete[] p;底层实现是怎么做的呢?以下:

  1. 查找数组大小:运行时使用 p 指针回退到数组大小存储的位置,获取数组的大小。

  2. 调用析构函数:如果数组元素是类对象,并且有析构函数,运行时将为数组中的每个元素调用析构函数。运行时知道数组的大小,所以它可以正确地循环通过每个元素来调用析构函数。

  3. 内存回收:运行时释放整个数组占用的内存块,包括存储数组大小的那部分内存。

  4. 清理内部管理信息:运行时更新其内部数据结构,标记相应的内存块为“可用”。

那代码中还有一个问题,我们一般new会调用构造函数,代码如下:

int *p = new int[5]; 
int *p = new int[5](); 

以上两个有什么区别呢?简单来说:

  1. int *p = new int[5];

    • 不会初始化数组中的元素。拥有未定义的值,取决于内存初始状态。
    • 必须在使用数组之前手动初始化每个元素。
  2. int *p = new int[5]();

    • 会将数组中的每个元素初始化为0。
    • “值初始化”(value-initialization)。当你在 new 表达式后面加上一对空括号 () 时,触发值初始化。对于基本数据类型如 int,初始化为0。
    • 确保数组的每个元素都被初始化为一个确定的值,减少了出错。

大概是这些~,有帮助就点个赞吧!

http://www.hkea.cn/news/336722/

相关文章:

  • wordpress视频点播seo技术是干什么的
  • 网站推广是怎么做的网络营销专业如何
  • 平面设计线上兼职上海网站seo
  • 个性化网站定制价格今日热点
  • 做网站的艰辛免费个人网站申请
  • 网站改版需要多久网站设计与制作毕业论文范文
  • 深圳横岗网站建设网站建设的推广渠道
  • 有没有什么网站免费做名片2023年新闻小学生摘抄
  • 新网金商网站外链查询工具
  • 网站建设的进度竞价托管选择微竞价
  • 网站快速网站推广怎么做一个公司网站
  • 旅游网站模板htmlseo品牌优化整站优化
  • 方圆网站建设aso优化重要吗
  • 做购实惠网站的意义好用的搜索引擎有哪些
  • 怎么把自己笔记本做服务器做个网站搭建网站基本步骤
  • jeecms做企业网站成都网站建设公司排名
  • 沈阳招聘网站开发地推项目平台
  • 798艺术区成都seo达人
  • 平度网站建设抖音代运营收费详细价格
  • 株洲网站优化找哪家seo优化的价格
  • 找印度人做网站sem竞价推广公司
  • 山西网站推广公司网站关键词优化怎么弄
  • 微信分销是什么重庆优化seo
  • 武汉企业网站推广方案永久免费无代码开发平台网站
  • 网站开发岗位群怎样推广产品
  • 桐城市美丽乡村建设专题网站石家庄整站优化技术
  • 北京建网站的公司哪个比较好郑州seo价格
  • 进空间的网站网络营销常见的工具
  • wordpress发文章的id怎么不连续如何做好搜索引擎优化工作
  • 交互式网站如何做seo推广软件排名