双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

如何优化纯C静态二维数组

cphj cphj 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1. 问题背景
纯C代码使用静态二维数组管理核心数据,例如:
typedef struct Data_s
{
char valid; // 表示该块数据已经使用
char id;
//...
//...
} Data;
Data data[MAX_A][MAX_B];

MAX_A和MAX_B都小于50,但不能修改(因为是业务规格)

程序运行时,根据外部动态请求把单个数据元素写到data数组中,如:
AddData(Data * element, int a, int id);
把单个数据写到data[a][?]中,?是未使用(空闲)的元素,id是数据元素的唯一标号(在同一行内唯一,在不同行之间不唯一),id的范围0-255

访问数据时,按下标a加上id搜索,如:
ReadDataByID(Data * element, int a, char id);
现有代码是用for循环搜索id,效率为O(n)

2. 目标
因为开这个静态二维数组导致内存基本占满(非PC应用),但实际数组中有大量空闲元素,所以希望提高内存的使用率
同时,希望在整体内存使用减少的条件下,用部分内存来换取访问数据的速度提升


请问大家有什么想法,或者思路?

我的想法在下面,如果有错误,也尽管提

谢谢!
...全文

相关推荐

评论 43
收藏 已收藏
分享
返回顶部
cphj
C语言 70,039 成员 243,237 内容