重庆知名做网站的公司北京移动端网站优化

web/2025/10/3 15:43:04/文章来源:
重庆知名做网站的公司,北京移动端网站优化,杰诚网站建设,成都九度装饰设计有限公司参考链接 FFmpeg源代码简单分析#xff1a;内存的分配和释放#xff08;av_malloc()、av_free()等#xff09;_雷霄骅的博客-CSDN博客_av_malloc 内容介绍 内存操作的常见函数位于libavutil\mem.c中本文记录最常使用的几个函数#xff1a; av_malloc()av_realloc()av_mal…参考链接 FFmpeg源代码简单分析内存的分配和释放av_malloc()、av_free()等_雷霄骅的博客-CSDN博客_av_malloc 内容介绍 内存操作的常见函数位于libavutil\mem.c中本文记录最常使用的几个函数 av_malloc()av_realloc()av_mallocz()av_calloc()av_free()av_freep() 代码 av_malloc() void *av_malloc(size_t size) {void *ptr NULL;if (size atomic_load_explicit(max_alloc_size, memory_order_relaxed))return NULL;#if HAVE_POSIX_MEMALIGNif (size) //OS X on SDK 10.6 has a broken posix_memalign implementationif (posix_memalign(ptr, ALIGN, size))ptr NULL; #elif HAVE_ALIGNED_MALLOCptr _aligned_malloc(size, ALIGN); #elif HAVE_MEMALIGN #ifndef __DJGPP__ptr memalign(ALIGN, size); #elseptr memalign(size, ALIGN); #endif/* Why 64?* Indeed, we should align it:* on 4 for 386* on 16 for 486* on 32 for 586, PPro - K6-III* on 64 for K7 (maybe for P3 too).* Because L1 and L2 caches are aligned on those values.* But I dont want to code such logic here!*//* Why 32?* For AVX ASM. SSE / NEON needs only 16.* Why not larger? Because I did not see a difference in benchmarks ...*//* benchmarks with P3* memalign(64) 1 3071, 3051, 3032* memalign(64) 2 3051, 3032, 3041* memalign(64) 4 2911, 2896, 2915* memalign(64) 8 2545, 2554, 2550* memalign(64) 16 2543, 2572, 2563* memalign(64) 32 2546, 2545, 2571* memalign(64) 64 2570, 2533, 2558** BTW, malloc seems to do 8-byte alignment by default here.*/ #elseptr malloc(size); #endifif(!ptr !size) {size 1;ptr av_malloc(1);} #if CONFIG_MEMORY_POISONINGif (ptr)memset(ptr, FF_MEMORY_POISON, size); #endifreturn ptr; } 如果不考虑上述代码中的一大堆宏定义av_malloc()的代码可以简化成如下形式可以看出此时的av_malloc()就是简单的封装了系统函数malloc()并做了一些错误检查工作 void *av_malloc(size_t size) {void *ptr NULL;/* lets disallow possibly ambiguous cases */if (size (max_alloc_size - 32))return NULL;ptr malloc(size);if(!ptr !size) {size 1;ptr av_malloc(1);}return ptr; } av_realloc() void *av_realloc(void *ptr, size_t size) {void *ret;if (size atomic_load_explicit(max_alloc_size, memory_order_relaxed))return NULL;#if HAVE_ALIGNED_MALLOCret _aligned_realloc(ptr, size !size, ALIGN); #elseret realloc(ptr, size !size); #endif #if CONFIG_MEMORY_POISONINGif (ret !ptr)memset(ret, FF_MEMORY_POISON, size); #endifreturn ret; } 默认情况下的代码可以看出av_realloc()简单封装了系统的realloc()函数。C 库函数 – realloc() | 菜鸟教程 void *av_realloc(void *ptr, size_t size) {/* lets disallow possibly ambiguous cases */if (size (max_alloc_size - 32))return NULL;return realloc(ptr, size !size); } av_mallocz() void *av_mallocz(size_t size) {void *ptr av_malloc(size);if (ptr)memset(ptr, 0, size);return ptr; } av_mallocz()可以理解为av_malloc()zeromemoryav_mallocz()中调用了av_malloc()之后又调用memset()将分配的内存设置为0 av_calloc() void *av_calloc(size_t nmemb, size_t size) {size_t result;if (size_mult(nmemb, size, result) 0)return NULL;return av_mallocz(result); } static int size_mult(size_t a, size_t b, size_t *r) {size_t t;#if (!defined(__INTEL_COMPILER) AV_GCC_VERSION_AT_LEAST(5,1)) || AV_HAS_BUILTIN(__builtin_mul_overflow)if (__builtin_mul_overflow(a, b, t))return AVERROR(EINVAL); #elset a * b;/* Hack inspired from glibc: dont try the division if nelem and elsize* are both less than sqrt(SIZE_MAX). */if ((a | b) ((size_t)1 (sizeof(size_t) * 4)) a t / a ! b)return AVERROR(EINVAL); #endif*r t;return 0; } av_calloc()则是简单封装了av_mallocz() 从代码中可以看出它调用av_mallocz()分配了nmemb*size个字节的内存。 av_free() void av_free(void *ptr) { #if HAVE_ALIGNED_MALLOC_aligned_free(ptr); #elsefree(ptr); #endif } 可以看出av_free()简单的封装了free()  av_freep() void av_freep(void *arg) {void *val;memcpy(val, arg, sizeof(val));memcpy(arg, (void *){ NULL }, sizeof(val));av_free(val); } av_freep()简单封装了av_free()。并且在释放内存之后将目标指针设置为NULL。C 库函数 – memcpy() | 菜鸟教程  补充知识 内存对齐 参考链接计算机中的内存对齐与大小端 | MuYis Blog程序员通常认为内存就是一个字节数组每次可以一个一个字节存取内存。例如在C语言中使用char *指代“一块内存”Java中使用byte[]指代一块内存。如下所示。但那实际上计算机处理器却不是这样认为的。处理器相对比较“懒惰”它以块为单位进行数据的读取块的大小可以是2字节4字节8字节16字节甚至32字节来存取内存。例如下图显示了以4字节为单位读写内存的处理器“看待”上述内存的方式。上述的存取单位的大小称之为内存存取粒度。下面看一个实例分别从地址0和地址1读取4个字节到寄存器。从程序员的角度来看读取方式如下图所示。而2字节存取粒度的处理器的读取方式如下图所示。可以看出2字节存取粒度的处理器从地址0读取4个字节一共读取2次从地址1读取4个字节一共读取了3次。存储的时候也是将2个字节作为数据块的大小进行存储由于每次读取的开销是固定的因此从地址1读取4字节的效率有所下降。4字节存取粒度的处理器的读取方式如下图所示。可以看出4字节存取粒度的处理器从地址0读取4个字节一共读取1次从地址1读取4个字节一共读取了2次。从地址1读取的开销比从地址0读取多了一倍。由此可见内存不对齐对CPU的性能是有影响的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳网站设计公司专业吗中山网络公关

这份文件是关于DS3231SN芯片的数据手册,由Maxim Integrated公司生产。DS3231SN是一款高精度的I2C接口集成实时时钟(RTC)/温度补偿晶体振荡器(TCXO)/晶体的芯片。以下是该芯片的核心内容概述: 产品概述&…

张掖作风建设年网站备案网站制作

文章目录 功能描述实现代码 功能描述 有以下xml内容&#xff0c;需要转成String字符串。同时&#xff0c;要去掉文中所有格式。 <root><student><name>张三</name><sex>男</sex><age>16</age><class>1班</class>…

网站内嵌地图商丘网商丘网络第一媒体

文/圆梦志愿 伏老师众所周知&#xff0c;选科是我国新高考中最重要的事情之一&#xff0c;且涉及到了多门选考科目。其中&#xff0c;要数物理的话题性相对最强。那么&#xff0c;高考选科是不是物理特别重要&#xff1f;新高考没有选物理是不是完了&#xff1f;一、高考选科是…

三门峡市湖滨区建设局网站深圳网站seo关键词

4、zabbix添加监控项 nginx监控 在server上安装nginx 添加模板 浏览图形 mysql监控 zabbix自带mysql模板&#xff0c;所以可以在server1上直接做 创建数据库连接用户 percona数据库模板 清理掉mysql的模块链接 安装并配置好percona的数据库模板 测试脚本 删除tmp下的缓存文…

哪些网站可以做详情页洛阳做家教去什么网站

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1&#xff09;菜单实现 2&#xff09;进度条实现 3&#xff09;main函数实现 4&#xff09;Game函数 5&#xff0…

珠海网站建设技术支持迁西县住房和城乡规划建设局网站

12月6日&#xff0c;浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动&#xff0c;由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展&#xff0c;共遴选出24个优秀典型解决方案&#xff0c;迪捷软件“基于全数…

全网营销网站建设惠城网站制作

在 C# 中&#xff0c;IServiceCollection 是 ASP.NET Core 中用于依赖注入的接口。依赖注入是一种设计模式&#xff0c;它允许对象之间的依赖关系由外部组件管理&#xff0c;而不是在对象内部直接创建它们的依赖项。IServiceCollection 接口用于注册和配置应用程序中的服务。 …

网站建设鼠标移动变颜色传奇176网页游戏

前情提要&#xff0c;如果看了书本&#xff0c;这个lab难度不高&#xff0c;但是如果不看书&#xff0c;难度还是挺高的&#xff0c;并且这个lab会用到cachelab中学到的东西&#xff0c;需要阅读 第十章&#xff1a;系统编程第十一章&#xff1a;网络编程第十二章&#xff1a;…

西宁网站建设最好的公司校园加盟网站建设

机器视觉应用开发是指利用计算机视觉技术进行图像或视频数据处理和分析&#xff0c;实现自动化、智能化的应用程序开发。下面是机器视觉应用开发的一般步骤和常见任务。 需求分析&#xff1a;明确开发的机器视觉应用的具体需求和目标&#xff0c;例如人脸识别、目标检测、图像分…

做英语四级题的网站谷歌广告上海有限公司官网

对于网页编程来说&#xff0c;最重要的就是存取和读写数据了。存储方式可能有很多种&#xff0c;可以是字符串、数组、文件的形式等&#xff0c;今天学习了数组&#xff0c;可以说是PHP的数据应用中较重要的一种方式。PHP的数组函数众多&#xff0c;下面是我学习的小结&#xf…

黄浦企业网站制作wordpress添加语系

添加系统用户 useradd samba 添加samba用户 smbpasswd -a samba 激活samba用户 smbpasswd -e samba 1.winr运行secpol.msc打开本地安全策略 2.安全策略->本地策略->安全选项 3.右侧找到 网络安全:LAN管理器身份验证级别 打开 &#xff0c;选择 仅发送NTLMv2响应&#xf…

app下载官方网站英文外贸网站制作

[vue] 说下你对指令的理解&#xff1f; 指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况&#xff0c;稍后我们再讨论)。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&a…

医院网站建设联系方式营销型网站建设公司排名

Typescript允许你覆盖它的判断&#xff0c;并且能以任何你想要的方式分析它&#xff0c;这种机制被称为类型断言。 类型断言的两种方式&#xff1a; 1.as关键字 interface SquareConfig {color?: string;width?: number; }function createSquare(config: SquareConfig) {/…

企业门户网站需求模板网站建设开发方案

toFixed() 转载于:https://www.cnblogs.com/ytg1120/p/7101317.html

怎样创办一个网站重庆网络公司流程

这是Project Student的一部分。 其他帖子包括带有Jersey的Webservice Client&#xff0c;带有Jersey的 Webservice Server和带有Spring Data的Persistence 。 RESTful Webapp洋葱的第三层是业务层。 这就是应用程序的精髓所在–编写良好的持久性和Web服务层受到约束&#xff0…

乌镇网站建设标书网络营销手段有哪些

一、什么是湖仓一体&#xff08;Lakehouse&#xff09;&#xff1f; 湖仓一体是一种融合了数据湖的灵活存储能力与数据仓库的高效分析功能的现代数据架构。它通过整合两者的优势&#xff0c;解决了传统架构的局限性&#xff0c;为企业数据处理提供了更全面的解决方案。 数据湖…

学校集约网站建设我做的网站怎样被百度收录

在本文中&#xff0c;我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能。 从Java的第一个版本开始&#xff0c;它是一种强类型语言&#xff0c;在这里我们需要提及每种变量数据类型。 我们所有人都感到Java是冗长的语言&#xff0c;并期望精…

廊坊公司网站建设濮阳市建设分局网站

查询非嵌套文档数组 非嵌套文档的数组&#xff0c;数组由数字、字符串等元素组成。 以下方法对数组字段进行查询操作的示例&#xff0c;包括对数组匹配查询&#xff0c;元素的增、删、改操作&#xff0c;空数组、非空数组查询等。 测试数据 连接到 mongodb 数据库&#xff0…

中国行业网站大全wordpress入侵教程

功能&#xff1a;在Web页中创建通用表。 属性&#xff1a; 1、CellPadding属性&#xff1a;用于设置表中单元格的边框和内容之间的距离&#xff08;以像素为单位&#xff09;。默认为-1&#xff08;未设置&#xff09;。 2、CellSpacing属性&#xff1a;用于设置表中单元格之间…

信息网站设计案例中山做网站排名

如今闹得不可开交的3Q大战已经成了一道独特的风景线&#xff0c;让我们在茶余饭后又增添了不少谈资。这两个中国最大的客户端软件提供商各有拥趸无数&#xff0c;双方铆足了劲相互吐口水、扔砖头&#xff0c;现在貌似到了动刀子了。周、马在媒体上也都将自己标榜为“美貌与智慧…