常见问题

本页将列出与 Vector Helper 相关的常见问题

Vector Helper 适用于那些平台?

跨平台,理论上支持可执行通用 C/C++ 代码的平台。目前已经过测试的系统平台有 Linux、Windows;已经过测试的 CPU 架构有 x86、amd64、arm、arm64。

Vector Helper 是否必须编译为库后才能使用?

不,根据场景不同,若您侧重于性能,请直接将源代码文件加入您的项目并一同参与构建,同时建议您打开编译器的优化选项,例如 GCC 建议打开 -O3/-O2、-funroll-all-loops、-flto、-fomit-frame-pointer 优化选项,并进行静态链接(-static)。

若您侧重于多进程实例见的内存占用,建议您构建动态库后与您的项目进行动态链接。

若您侧重于易用性,建议您构建静态库后与您的项目进行动态或静态链接。

Vector Helper 整体性能表现如何?

根据您的使用方式不同而异,理论上若您直接将 Vector Helper 的源代码加入您的项目并参与构建,开启编译器适用的优化选项,采用静态链接方式,性能表现优于 std::vector<T> 模板类,但不是绝对的。

由于 Vector Helper 侧重于运行时安全与完整性,性能相对于前者是次要的。当然,您可以手动调整这一点。

Vector Helper 的内存分配器运行规则是什么?

当 Vector 对象实例的可用空闲内存空间不足时,内存分配器将对已分配的内存空间进行 1 倍 + 本次所需内存大小的扩容。当元素被移除时,其元素所占用的内存不会被主动回收,这是为了减少之后内存分配器的运行次数,从而提升应用程序执行性能。

若需要释放可用的空闲内存空间,可以调用内存管理函数 vector_helper_free_available_memory 手动强制回收空闲内存空间。

为什么 Vector 对象实例的初始可容纳元素个数必须大于 0?

因为当您尝试创建一个 Vector 对象实例时,内存分配器需要分配不少于 1 byte 的内存空间,以便确保内存分配是成功的。同时,建议您合理设置初始可容纳元素个数,这有助于提升应用程序执行性能。

为什么不能直接访问 Vector 对象实例数据结构?

为了确保 Vector 对象实例的数据结构完整性,即使您可以轻松访问该数据结构。您应该调用 Vector Helper API 实现相关功能,否则会破坏运行时安全与完整性,导致不可预料的异常。

为什么不能直接通过元素指针访问和修改元素?

因为这样可能会破坏元素的完整性。为了确保运行时安全与完整性,您应该调用 Vector Helper API 实现相关功能,否则可能会导致不可预料的异常。

我的问题没有在“常见问题”页面中列出怎么办?

非常抱歉该页面没有帮助到您,您可以从下方选取一个解决方案然后继续:

  • 前往 Vector Helper 项目位于 Github 的页面提交 issue(推荐)

  • 将您的问题详细描述并邮件至 xiaoyy@altca.cn

在收到您的问题后,我们会尽力为您解答与 Vector Helper 相关的问题。