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

网站做服装那个平台好一点站长之家seo综合

网站做服装那个平台好一点,站长之家seo综合,制作网站首先做的是,杭州网站设计建设博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1…

 博主介绍:程序喵大人

  • 35- 资深C/C++/Rust/Android/iOS客户端开发
  • 10年大厂工作经验
  • 嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手
  • 《C++20高级编程》《C++23高级编程》等多本书籍著译者
  • 更多原创精品文章,首发gzh,见文末
  • 👇👇记得订阅专栏,以防走丢👇👇
    😉C++基础系列专栏
    😃C语言基础系列专栏
    🤣C++大佬养成攻略专栏
    🤓C++训练营
    👉🏻个人网站

最主要还是因为栈内存和堆内存的管理方式不同。

内存管理方式不同

栈内存

  • 栈内存是由编译器自动管理的,内存的分配和释放遵循 后进先出(LIFO) 的原则。

  • 栈内存的分配和释放是通过移动栈指针来实现的,这肯定是一个非常快速的操作。

    • 分配:栈指针向下移动,分配内存。

    • 释放:栈指针向上移动,释放内存。

堆内存

  • 堆内存是由程序员手动管理的,内存的分配和释放需要通过动态内存分配器(如 mallocnew)来完成。

  • 堆内存的分配和释放需要维护一个复杂的内存池,可能涉及很多复杂的操作,比如:

    • 查找合适大小的空闲内存块。

    • 分割或合并内存块以优化内存使用。

    • 处理内存碎片问题。

操作系统的介入

栈内存

  • 栈内存的分配和释放完全由程序控制,不需要操作系统的介入。

  • 栈内存的操作是用户态的操作,速度非常快。

堆内存

  • 堆内存的分配和释放可能涉及操作系统的介入(如通过 brkmmap 系统调用扩展堆空间)。

  • 堆内存的操作可能涉及 用户态和内核态 的切换,这会增加额外的开销。

内存碎片问题

栈内存

  • 栈内存的分配和释放是顺序的,不会产生内存碎片问题。

堆内存

  • 堆内存的分配和释放是随机的,可能会导致内存碎片问题。

  • 内存碎片会降低内存分配器的效率,增加分配和释放的时间。

缓存局部性

栈内存

  • 栈内存的分配是连续的,具有良好的缓存局部性

  • CPU 缓存可以高效地预取栈内存中的数据,提高访问速度。

堆内存

  • 堆内存的分配是分散的,缓存局部性较差。

  • CPU 缓存可能无法高效地预取堆内存中的数据,导致访问速度较慢。

线程安全性

栈内存

每个线程都有自己的栈,栈内存的分配和释放是线程私有的,不需要考虑线程同步问题。

堆内存

堆内存是全局共享的,分配和释放可能涉及线程同步问题(如锁机制),增加额外的开销。

代码示例

#include <iostream>
#include <chrono>void stackMemory() {auto start = std::chrono::high_resolution_clock::now();for (int i = 0; i < 1000000; ++i) {int arr[100]; // 栈内存分配}auto end = std::chrono::high_resolution_clock::now();std::cout << "Stack time: "<< std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()<< " microseconds" << std::endl;
}void heapMemory() {auto start = std::chrono::high_resolution_clock::now();for (int i = 0; i < 1000000; ++i) {int* arr = new int[100]; // 堆内存分配delete[] arr; // 堆内存释放}auto end = std::chrono::high_resolution_clock::now();std::cout << "Heap time: "<< std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()<< " microseconds" << std::endl;
}int main() {stackMemory();heapMemory();return 0;
}

输出结果

Stack time: 1267 microseconds
Heap time: 13792 microseconds

从结果可以看出,栈内存的分配和释放速度远远快于堆内存。

总结

栈内存的申请和释放速度快于堆内存,主要原因包括:

  1. 栈内存的管理是自动且顺序的,而堆内存的管理是手动且随机的。

  2. 栈内存的操作不涉及操作系统和线程同步,而堆内存可能涉及系统调用和锁机制。

  3. 栈内存具有良好的缓存局部性,而堆内存的缓存局部性较差。

  4. 栈内存不会产生内存碎片问题,而堆内存可能会产生内存碎片。

    码字不易,欢迎大家点赞关注评论,谢谢!


C++训练营

专为校招、社招3年工作经验的同学打造的1V1 C++训练营,量身定制学习计划、每日代码review,简历优化,面试辅导,已帮助多名学员获得大厂offer!

http://www.dtcms.com/wzjs/200729.html

相关文章:

  • 做软件常用的网站有哪些软件baidu 百度一下
  • 成品网站源码1688自动跳转淘宝指数在线查询
  • 网站建设维护网页设计优化网站关键词排名
  • 网站图片制作淘宝新店怎么快速做起来
  • 网站系统cms百度联盟推广
  • 收费小说网站怎么做做一个网站需要多少钱大概
  • 宁波环保营销型网站建设长尾关键词查询
  • 做图片的网站都有哪些百度seo什么意思
  • 免费建购物网站可以免费网络推广网站
  • 服务器在国外的网站百度官网入口
  • 政府网站建设的整改措施服务器ip域名解析
  • 外贸网站建设公司服务网站建设服务商
  • 做网站要多长时间seo外链推广员
  • 龙华做网站的公司微信营销是什么
  • 做网站专用素材百度云官网入口
  • 泰安做网站建设的公司成都推广系统
  • 公司改名网站备案发布任务注册app推广的平台
  • 做关键词排名卖网站seo 推广服务
  • 营销网站的推广百度趋势搜索大数据
  • 佟年给韩商言做的网站整站优化价格
  • 如何制作假网页手机端关键词排名优化软件
  • 顺口大气三个子公司名字排名怎么优化快
  • 遂宁建设网站网络推广外包怎么接单
  • 网站制作经典案例b2b十大平台排名
  • 城市建设理论研究官方网站网络营销渠道类型有哪些
  • 网站系统建设方案查权重工具
  • 网站建设设计方案百度网站大全
  • asp.net做的网站文字控件随窗口大小不变化优化营商环境
  • 微网站界面设计营销型网站的特点
  • 微商官网台州seo网站排名优化