gpt4 book ai didi

c - 在 C 中读取和存储字符串列表的最节省内存的方法

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:00 25 4
gpt4 key购买 nike

我想知道在 C 中读取和存储字符串列表的内存效率最高的方法是什么。

每个字符串可能有不同的长度,所以预先分配一个大的二维数组会很浪费。我还想避免为每个字符串使用单独的 malloc,因为可能有很多字符串。

字符串将从一个大缓冲区读取到我正在询问的这个列表数据结构中。

是否可以通过一次完全正确大小的分配来单独存储所有字符串?

我的一个想法是将它们连续存储在一个缓冲区中,然后有一个 char * 数组指向缓冲区中的不同部分,其中将以 '\0' 来分隔。不过,我希望有更好的方法。

struct list {
char *index[32];
char buf[];
};

数据结构和字符串将是严格只读的。

最佳答案

假设您事先知道所有字符串的长度,这是一种稍微有效的格式:

|| total size |  string 1 | string 2 | ........ | string N | len(string N) | ... | len(string 2) | len(string 1) ||

您可以将长度存储在固定宽度整数或可变宽度整数中,但重点是您可以跳到最后并相对有效地扫描所有长度,并从length sum 你可以计算字符串的偏移量。当没有剩余空间时,您知道什么时候到达最后一个字符串。

关于c - 在 C 中读取和存储字符串列表的最节省内存的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com