DStruct:增加静态内存管理/分配器 SMA支持
开源软件: DStruct 数据结构库 开发日志 2023.8.10
增加基层的静态内存管理/分配器 SMA ( Static Memory Allocator )
[目标]
[实现思路]
[可能的特殊环境]
- 嵌入式开发环境
- 裸机开发环境
- 内核环境
- 等其他不支持动态内存分配的环境
[内存管理/分配器特性]
- 自定义匿名全局静态内存大小 和 最大空闲块设置
- 内存"碎片"整理/合并
- 多定义支持(定义多个SMA用于不同场景, 例如给每个容器配置一个特殊的内存分配器)
- 容器Alloc接口支持
Vector 使用 SMA 作为分配器的 例子 -- 当无动态内存分配支持时
#include <iostream> #include "dstruct.hpp" #define MEM_1M_BYTE 1024 * 1024 // define SMA, 1M size using MySMA_1M = dstruct::StaticMemAllocator<MEM_1M_BYTE>; int main() { std::cout << "\nTesting: " << __FILE__; dstruct::Vector<int, MySMA_1M> vec; //std::cout << MySMA_1M::free_mem_size() << std::endl; DSTRUCT_ASSERT(MySMA_1M::free_mem_size() == MEM_1M_BYTE); vec.resize(8, 1); // 8 * 4 = 32 //std::cout << MySMA_1M::free_mem_size() << std::endl; DSTRUCT_ASSERT(MySMA_1M::free_mem_size() == MEM_1M_BYTE - vec.capacity() * sizeof(int)); vec.push_back(4); //std::cout << MySMA_1M::free_mem_size() << std::endl; DSTRUCT_ASSERT(MySMA_1M::free_mem_size() == MEM_1M_BYTE - MySMA_1M::MEM_ALIGN_ROUND_UP(vec.capacity() * sizeof(int))); std::cout << " pass" << std::endl; return 0; }
Other

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
主从数据不一致竟然不报错?
一个线上数据丢失故障案例,引出了在 GTID 模式下 AUTO POSITION MODE 的必要性。 作者:孙绪宗 新浪微博 DBA 团队工程师,主要负责 MySQL、PostgreSQL 等关系型数据库运维。 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 阅读前需知 Retrieved_Gtid_Set:从库已经接收到主库的事务编号(从库的 IO 线程已经接受到了)。 Executed_Gtid_Set:已经执行的事务编号(从库的执行 SQL 线程已经执行了的 SQL)。 故障现象 主从数据不一致,但是看复制是正常状态(双 Yes)。此时主库执行,从库本该报错 1062 或者 1032 的 SQL,从库复制线程还是双 Yes,没有报错。 MySQL 版本:5.7.35 故障复现 查看主库状态 MySQL [xuzong]> show master status; +------------------+----------+--------------+------------------+---------------...
- 下一篇
Easy Retry v2.2.0 发布,支持多数据库等多个功能
【视频演示】Easy Retry 发布 2.2.0 新增多个重要功能快来尝鲜吧 Easy Retry致力提高分布式业务系统一致性的分布式重试平台 易用性业务接入成本小。避免依赖研发人员的技术水平,保障重试的稳定性 灵活性能够动态调整配置,启动 / 停止任务,以及终止运行中的重试数据 操作简单分钟上手,支持 WEB 页面对重试数据 CRUD 操作。 数据大盘实时管控系统重试数据 多样化退避策略Cron、固定间隔、等级触发、随机时间触发 容器化部署服务端支持 docker 容器部署 高性能调度平台支持服务端节点动态扩容和缩容 多样化重试类型支持 ONLY_LOCAL、ONLY_REMOTE、LOCAL_REMOTE 多种重试类型 重试数据管理可以做到重试数据不丢失、重试数据一键回放 支持多样化的告警方式邮箱、企业微信、钉钉、飞书 重试方案对比 设计思想 支持Mysql/MariaDB/PostgreSql数据库【新增】issues 对notify, scene, group, retry_task, retry_dead_letter表的操作抽象access统一收口【优化】 去除huto...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2全家桶,快速入门学习开发网站教程