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

长春公司做网站找哪个公司好企业推广视频

长春公司做网站找哪个公司好,企业推广视频,网站正在建设模板,网页视频下载器破解版作者:求一个demo 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习) 废话不多…

作者:求一个demo

版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习)

废话不多说,我们直接开始------>>>>>>

一、内存泄漏

        1、定义:指程序在动态分配内存后,无法释放已经已经分配的内存。

        2、产生原因

        ①忘记调用delete或delete[]释放内存。

        ②异常 导致内存释放代码未执行。

        ③指针被重新赋值前没有释放原内存。

        3、示例:

// 示例1: 基本内存泄漏
void memoryLeak1() {int* ptr = new int(10); // 分配内存// 忘记delete// delete ptr;
}// 示例2: 异常导致的内存泄漏
void memoryLeak2() {int* ptr = new int(20);throw std::runtime_error("Oops"); // 抛出异常delete ptr; // 永远不会执行
}// 示例3: 指针重赋值导致泄漏
void memoryLeak3() {int* ptr = new int(30);ptr = new int(40); // 原内存泄漏delete ptr; // 只释放了第二个分配的内存
}

        4、危害

        ①程序内存占用的越来越多。

        ②长时间运行可能导致内存耗尽。

        ③性能下降。

        5、解决方案

        ①使用智能指针(unique_ptr、shared_ptr)。

        ②确保每个new都有delete。

        ③RAII原则(在对象的构造中获取资源,在对象的析构中释放资源)。

        ④编写异常安全代码(保证程序异常时,能正确释放资源)(try-catch)

二、野指针

        1、定义:指向已经释放或无效内存的指针。

        2、产生原因

        ①指针指向的对象已被释放。

        ②指针未初始化。

        ③指针指向的局部变量 已经超出作用域。

        3、示例:

// 示例1: 指向已释放内存
void danglingPointer1() {int* ptr = new int(100);delete ptr; // 释放内存*ptr = 200; // 危险!ptr现在是野指针
}// 示例2: 指向局部变量
int* danglingPointer2() {int local = 300;return &local; // 返回局部变量的地址
} // local超出作用域,指针变为野指针// 示例3: 未初始化指针
void danglingPointer3() {int* ptr; // 未初始化*ptr = 400; // 危险!访问随机内存地址
}

        4、危害

        ①访问野指针导致未定义行为。

        ②可能造成程序崩溃。

        ③可能访问其他数据。

        ④可能造成信息泄漏。

        5、解决方案

        ①释放内存后将指针置空。

        ②使用智能指针。

        ③初始化所有指针。

        ④避免返回局部变量的指针/引用。

// 安全使用指针
void safePointer() {// 方案1: 使用智能指针auto smartPtr = std::make_unique<int>(500);// 方案2: 释放后置nullptrint* ptr = new int(600);delete ptr;ptr = nullptr; // 现在访问ptr会引发明确错误// 方案3: 使用引用代替指针int value = 700;int& ref = value; // 引用比指针更安全
}

三、内存泄漏与野指针检测工具

        1、常用工具:

        ①Valgrind(当程序在 Valgrind 环境下运行时,Valgrind 会对程序的内存操作进行拦截和监控。它会模拟一个虚拟的 CPU 环境,跟踪每一次内存分配和释放操作,记录内存的使用情况)(linux/macOS)。

valgrind --leak-check=full ./your_program

        ②AddressSanitizer(gcc)。

gcc -fsanitize=address -g your_program.c -o your_program

        ③Dr.Memory(Windows/linux)。

        ④Visual Studio Debugger (Windows)。

四、最佳操作规范

        1、优先使用智能指针,而不是裸指针:

        ①unique_ptr用于独占所有权。

        ②shared_ptr用于共享所有权。

        ③weak_ptr用于打破循环引用。

        2、遵循RAII原则:

        ①资源获取后立马初始化。

        ②构造函数获取资源,析构函数释放资源。

        3、避免手动内存管理:

        ①使用标准库容器(vector、string等),代替动态数组。

        ②使用对象而非指针。

        4、异常安全编程:

        ①确保异常发生时,资源能正确释放。

        5、代码规范:

        ①每个new对应一个delete。

        ②释放后立刻将指针置为nullptr。

        ③避免返回裸指针。

五、内存泄漏与野指针对比

        ①定义上:内存泄漏是指分配的内存无法被释放;野指针是指指向无效内存的指针。

        ②原因上:内存泄漏是指忘记delete/异常/指针重赋值;野指针是指对象已释放/返回局部变量/未初始化。

        ③危害上:内存泄漏会导致内存耗尽/性能下降;野指针导致未定义/崩溃/信息泄漏。

        ④检测上:都是使用Valgrind/AddressSanitizer。

        ⑤解决方法上:内存泄漏可以使用RAII原则/智能指针;野指针可以 指针都初始化/智能指针/使用引用。

六、校招面试常问内容

1、什么是内存泄漏?危害是什么?

        (1)内存泄漏:程序失去对内存的掌控,导致无法释放内存。

        (2)危害:

                ①程序内存占用持续增长。

                ②内存可能逐渐被耗尽。

                ③性能下降,可能导致程序崩溃。

2、列举几种导致内存泄漏的场景?

        ①new之后忘记delete。

        ②异常发生在delete代码之前,导致delete被跳过。

        ③原内存丢失。

void leak3() {int* p = new int(30);p = new int(40); // 原内存泄漏delete p; // 只释放第二个
}

3、如何避免内存泄漏?

        ①使用智能指针。

        ②编写异常 释放资源代码(try-catch)。

        ③确保每个new都有delete。

        ④使用RAII原则(构造获取资源,析构释放资源)。

        ⑤使用标准库容器(vector/string)代替动态数组。

4、什么是野指针?危害是什么?

        (1)野指针:指向已释放或无效的内存。

        (2)危害:

                ①未定义行为。

                ②导致程序崩溃或数据损坏。

                ③导致信息泄露。

5、野指针典型场景?

        ①delete释放后仍旧使用释放内存的指针。

        ②返回局部变量地址。

6、如何避免野指针?

        ①使用智能指针。

        ②delete释放资源后置nullptr。

        ③使用引用代替指针。

     

最后,如有不足和错误的地方,期待私信指正!


文章转载自:

http://BC2f6enp.rqhdt.cn
http://9Y21rPfK.rqhdt.cn
http://TWu82Cfe.rqhdt.cn
http://co7N7hKw.rqhdt.cn
http://EcfVXUn7.rqhdt.cn
http://afFDXQBv.rqhdt.cn
http://h4O9Qh5H.rqhdt.cn
http://93NL92by.rqhdt.cn
http://j4qm7so2.rqhdt.cn
http://rFKUnmbo.rqhdt.cn
http://PSARQoXQ.rqhdt.cn
http://K3tyTZY6.rqhdt.cn
http://ueInbR9D.rqhdt.cn
http://gkVevZOz.rqhdt.cn
http://0gQV4Ph3.rqhdt.cn
http://NsAixATU.rqhdt.cn
http://wBbeJcfR.rqhdt.cn
http://IvAwyiR0.rqhdt.cn
http://IOnSoa3v.rqhdt.cn
http://v4PruvDO.rqhdt.cn
http://BZ6FKOJr.rqhdt.cn
http://5mzm3tZW.rqhdt.cn
http://9kUAR5Rh.rqhdt.cn
http://LRSvEHAR.rqhdt.cn
http://2PFblZs9.rqhdt.cn
http://Ov12XlP1.rqhdt.cn
http://Amm63tLv.rqhdt.cn
http://Zsh4PpzQ.rqhdt.cn
http://bOVSSOTf.rqhdt.cn
http://p5RS86YV.rqhdt.cn
http://www.dtcms.com/wzjs/677563.html

相关文章:

  • 个人主页网站欣赏用自己电脑做服务器 网站
  • 个人网站建设价格普洱做网站的报价
  • 如何做挂qq的网站重庆建站公司网站模板
  • 上海电信网站备案深圳网站制作建设服务公司
  • 服装html网站模板下载wordpress注册用户邮件验证
  • 网站建设是否包含等保软件论坛网站有哪些
  • 大王庄网站建设公司天津网站优化实战
  • 手机网站制作流程信息发布网
  • 网站关键词指数查询工具公司做的网站入哪个会计科目
  • 怎么用电脑做网站服务器html5软件下载手机版
  • 成都网站建设询q479185700霸屏做网站的会计分录
  • 网站建设静态代码wordpress 隐形按钮
  • 沧州网站运营公司购物手机网站怎么做
  • 凯里专注网站建设报价58同城会员网站怎么做
  • 永久免费crm软件下载在线刷seo
  • php网站开发案例教程 dvdwordpress采集淘宝商品
  • 电商网站平台有哪些功能模块网站建设的网页怎么做
  • 成都市住房和城乡建设局官方网站在线销售网站设计文献
  • 怎么建设自己的网站成都小程序开发公司找哪家
  • 心雨在线高端网站建设专业wordpress登录qq
  • 行业网站运营wordpress homeslide
  • 模板网站怎么用怎么样可以建设网站
  • 移动电商网站开发需求工业设计是学什么
  • 怎么用文件传输协议登录网站阿哥体育个人网页
  • 如何让自己做的博客网站上线今天深圳大事件新闻
  • 免费永久个人域名注册系统优化软件哪个最好的
  • 网站举报平台12315怎么做网站的站点地图
  • 网站如何更新内容视频剪辑培训班学费一般多少
  • 深圳好的网站制作公司宝塔默认安装wordpress
  • 宁波正规站内优化seo购买网站建站