simdjson填充区含非空字符是否安全?该区域是否会被修改?
SimdJSON填充区的安全性与修改问题
SimdJSON要求在JSON数据末尾保留simdjson::SIMDJSON_PADDING大小的填充区,请问该填充区中存在非空字符是否安全?SimdJSON会修改该区域吗?
示例代码:
auto constexpr json_length = 3; auto constexpr buffer_size = json_length + simdjson::SIMDJSON_PADDING; char buff[buffer_size] = { '[', '1', ']' }; //相关JSON数据 for (size_t i = json_length; i < buffer_size; ++i) { buff[i] = 'j'; } //在下方的使用场景中,simdjson会修改缓冲区的这部分吗?还是要求该区域必须未使用/未初始化? simdjson::ondemand::parser parser; parser.iterate(buff, json_length, buffer_size);
回答
- 填充区存在非空字符完全安全:SimdJSON的填充区设计目的是避免SIMD指令执行时出现越界访问,它仅会读取该区域内容用于内部对齐处理,不会因填充区有非空字符导致解析错误。
- SimdJSON不会修改填充区:在你给出的
parser.iterate()调用场景中,SimdJSON仅读取缓冲区内容进行解析,不会对填充区的字节做任何写入操作。你可以在填充区存放任意数据,无需担心被修改,也不需要特意留空或保持未初始化状态。
内容的提问来源于stack exchange,提问作者TosinAl
相关产品推荐
相关产品推荐

