diff --git a/docs/zh/api.md b/docs/zh/api.md index 0734430..b580e5c 100644 --- a/docs/zh/api.md +++ b/docs/zh/api.md @@ -55,7 +55,8 @@ len = ef_get_env_blob("key", value, sizeof(value) , NULL); **注意** : -- 该函数已废弃,不推荐继续使用,可以使用上面的函数替代; +- 该函数**已废弃**,不推荐继续使用,可以使用上面的函数替代; +- 该函数不允许连续使用,使用时需使用 strdup 包裹,确保每次返回回来的字符串内存空间独立; - 该函数不支持可重入,返回的值位于函数内部缓冲区,出于安全考虑,请加锁保护。 ```C diff --git a/docs/zh/v4_migrate.md b/docs/zh/v4_migrate.md index 5ef3c85..7a40966 100644 --- a/docs/zh/v4_migrate.md +++ b/docs/zh/v4_migrate.md @@ -20,9 +20,31 @@ V4.0 底层对于 ENV 的存储使用的 blob 格式,所以增加如下 blob 以下接口在 V4.0 中仍然可用,但已经由于种种原因被废弃,可能将会在 V5.0 版本中被正式删除 - `char *ef_get_env(const char *key)` + + - 注意:由于 V4.0 版本开始,在该函数内部具有环境变量的缓冲区,不允许连续多次同时使用该函数,例如如下代码: + + ```C + // 错误的使用方法 + ssid = ef_get_env("ssid"); + password = ef_get_env("password"); // 由于 buf 共用,password 与 ssid 会返回相同的 buf 地址 + + // 建议改为下面的方式 + ssid = strdup(ef_get_env("ssid")); // 克隆获取回来的环境变量 + password = strdup(ef_get_env("password")); + + // 使用完成后,释放资源 + free(ssid); // 与 strdup 成对 + free(password); + ``` + + + - `EfErrCode ef_save_env(void)` + - `EfErrCode ef_set_and_save_env(const char *key, const char *value)` + - `EfErrCode ef_del_and_save_env(const char *key)` + - `size_t ef_get_env_write_bytes(void)` ## 2、主要修改项 @@ -34,7 +56,7 @@ V4.0 底层对于 ENV 的存储使用的 blob 格式,所以增加如下 blob - 删除 ENV_USER_SETTING_SIZE:V4.0 无需 RAM 缓存 - 增加 EF_WRITE_GRAN :详见移植文档 -## 2.2 接口改进 +### 2.2 接口改进 - 建议使用 ef_get_env_blob 接口替代 ef_get_env,使用方法详见 API 文档 - V4.0 无需额外执行保存动作,所以使用这些接口的代码在 V4..0 无意义,可以移除