【发布时间】:2022-01-23 10:53:13
【问题描述】:
最近我将iniparser 作为首选。然而,它的 API 创建了太多的空格,导致内存浪费。
例如,iniparser_set() 将创建
/*test.ini*/
[section]
key = value
改为
/*test.ini*/
[section]
key = value
从嵌入式系统的角度来看,删除那些多余的空格对于节省内存空间是一件好事。那么,如何解决呢?
【问题讨论】:
-
我在
iniparser_dumpsection_ini函数中看到了这一行:fprintf(f, "%-30s = %s\n", d->key[j]+seclen+1, d->val[j] ? d->val[j] : "");。如您所见,key 使用格式说明符%-30s打印。也许这就是问题所在。 -
无关:为小型嵌入式系统编写代码要求您避免浪费内存/cpu 周期/等,这是正确的。但是您真的确定 ini 文件中的一些额外空间值得您花时间吗?
-
@4386427 是的,因为它会像 100 多个 ini 文件
-
您可以克隆源代码并纠正有问题的 printf,正如 @kiner_shah 所指出的那样。或者,了解内部情况,您可以自己转储数据,而无需使用原始功能。生成inifiles很容易,也许你可以避免使用这个库。