2021年企业最主要的技术考虑
一个时代的结束 当用户试图在 Chrome 等浏览器中加载 Flash 游戏或内容时,现在内容无法加载,而是显示一个小横幅,引导到 Adobe 网站的 Flash 停止页面。虽然这一天早已到来,许多浏览器早在几年前就默认禁用 Flash,但对于 1996 年由 Macromedia 首次推出、2005 年被 Adobe 收购的 Flash 来说,这 25 年的时代正式结束。 “由于 Adobe 将在 2020 年 12 月 31 日之后不再支持 Flash Player,Adobe 将从 2021 年 1 月 12 日开始阻止 Flash 内容在 Flash Player 中运行,Adobe 强烈建议所有用户立即卸载 Flash Player,以帮助保护他们的系统。”页面上写道。Adobe 在 Mac/Windows 上卸载 Flash 时提供了说明,但需要注意的是,苹果在去年的 Safari 14 浏览器中直接取消了对 Flash 的支持。 Adobe 在 2017 年首次宣布了停止使用 Flash 的计划。该公司解释说:“HTML5、WebGL 和 WebAssembly 等开放标准多年来不断成熟,是 Flash 内容的可行替代品”。 Adobe 不打算再发布 Flash Player 更新或安全补丁,因此强烈建议用户卸载该插件。 多年来,Flash 因大量安全漏洞而声名狼藉,使 Mac 和 PC 用户面临恶意软件和其他风险,迫使微软和苹果等厂商不遗余力地进行安全修复。 苹果联合创始人、前 CEO 史蒂夫 · 乔布斯在 2010 年的一封公开信中提出了他的 “对 Flash 的看法”,批评 Adobe 的软件可靠性、安全性和性能都很差。乔布斯还表示,苹果 “不能任由第三方决定是否以及何时将我们的增强功能提供给我们的开发者。”
Flash 的停用应该不会对大多数用户造成严重影响,因为许多流行的浏览器已经远离了该插件。此外,iPhone 和 iPad 用户不会受到这一变化的影响,因为 iOS 和 iPadOS 从未支持过 Flash。 p此时是一个二级指针,参数赋值之后,p里面的内容就变成了pData这个指针变量的地址,也就是说p指向了pData这个变量。 执行*p = (char *)malloc(size + 1);
这句话首先搞明白*p是啥意思,刚才说了,p是一个指针,它指向了pData这个变量。那么在p前面加上取值操作符*,就相当于是取出指针p中的值,它里面的值就是pData!因此,malloc函数返回的堆空间首地址,就相当于是赋值给了pData,如下图: 执行char *pData = 0; 这一句没有变化。 执行do_malloc(&pData, 128);
把pData指针的地址作为实参进行传递,因为pData本身就是一个指针,加上取地址符&,就是指针的指针(二级指针),因此do_malloc函数的第一个参数就要定义成char**类型,此时示意如图: 到这里就已经看到程序崩溃的原因了:虽然给指针p赋值了,但是实参pData中的内容一直为空,因此从do_malloc函数返回之后,pData仍然是一个空指针,所以就崩溃了。当然,p指向的堆空间也就泄露了。 代码:版本2 代码的本意是在do_malloc函数中申请堆空间,然后把这块空间的首地址赋值给pData。在do_malloc函数中,调用系统函数malloc成功之后返回所分配空间的首地址,关键是要把这个首地址送给pData指针,也就是说要让pData指针变量中的值等于这个堆空间的首地址。
那应该如何通过中间的一个函数来完成这个功能呢,如下代码: (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |