> For the complete documentation index, see [llms.txt](https://smallso.gitbook.io/vector/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://smallso.gitbook.io/vector/learn/6.md).

# 尝试获取 Size & Count 和 Capacity

本页将介绍如何获取指定 Vector 对象实例的各类大小和各类计数

### 什么是 Size & Count 和 Capacity？

Size 也即大小，在 Vector Helper 中，Size 被定义为多种大小类型，也称之为大小计数器。而 Count 也即计数，在 Vector Helper 中被定义为多种计数类型，也称之为内部计数器。

* 例如 Size，我们可以获取指定 Vector 对象实例当前已分配的内存大小（byte）、单个元素大小（byte）、可用的空闲内存大小（byte）、已用内存大小（byte）等。
* 例如 Count，我们可以获取指定 Vector 对象实例当前有效的元素个数、最大可容纳的元素个数上限、内存分配器运行次数等。

Capacity 也即容量，在 Vector Helper 中，Capacity 被定义为 Vector 对象实例中当前可容纳的元素个数。

### 如何获取 Vector 对象实例已分配的内存大小？

我们需要调用 `vector_helper_get_size` 函数并将需要获取的大小计数器类型设置为 `VectorSizeType::kCurrentAllocMemorySize` 以便获取 Vector 对象实例 `vector_object` 已分配的内存大小（byte）：

{% code title="C" %}

```c
size_t alloc_memory_size = vector_helper_get_size(vector_object, 
    VectorSizeType::kCurrentAllocMemorySize);
```

{% endcode %}

现在，变量 alloc\_memory\_size 的值（byte）即为 Vector 对象实例 `vector_object` 已分配的内存大小（byte）。

### 如何获取 Vector 对象实例的单个元素的大小？

我们需要调用 `vector_helper_get_size` 函数并将需要获取的大小计数器类型设置为 `VectorSizeType::kSingleElementSize`以便获取 Vector 对象实例 `vector_object` 单个元素的大小（byte）：

{% code title="C" %}

```c
size_t single_element_size = vector_helper_get_size(vector_object, 
    VectorSizeType::kSingleElementSize);
```

{% endcode %}

现在，变量 `single_element_size` 的值（byte）即为 Vector 对象实例 `vector_object` 单个元素的大小（byte）。

### 如何获取 Vector 对象实例的可用空闲内存大小？ <a href="#ru-he-huo-qu-vector-dui-xiang-shi-li-dan-ge-yuan-su-de-da-xiao" id="ru-he-huo-qu-vector-dui-xiang-shi-li-dan-ge-yuan-su-de-da-xiao"></a>

我们需要调用 `vector_helper_get_size` 函数并将需要获取的大小计数器类型设置为 `VectorSizeType::kAvailableMemorySize`以便获取 Vector 对象实例 `vector_object` 可用的空闲内存大小（byte）：

{% hint style="info" %}
大小计数器 VectorSizeType::kAvailableMemorySize 为 **Virtual Size**，其值是实时计算的。
{% endhint %}

{% code title="C" %}

```c
size_t available_memory_size = vector_helper_get_size(vector_object, 
    VectorSizeType::kAvailableMemorySize);
```

{% endcode %}

现在，变量 `available_memory_size`的值（byte）即为 Vector 对象实例 `vector_object` 可用的空闲内存（byte）。

### 如何获取 Vector 对象实例的已用内存大小？

我们需要调用 `vector_helper_get_size` 函数并将需要获取的大小计数器类型设置为 `VectorSizeType::kUsedMemorySize`以便获取 Vector 对象实例 `vector_object` 已用内存大小（byte）：

{% hint style="info" %}
大小计数器 VectorSizeType::kUsedMemorySize 为 **Virtual Size**，其值是实时计算的。
{% endhint %}

{% code title="C" %}

```c
size_t used_memory_size = vector_helper_get_size(vector_object, 
    VectorSizeType::kUsedMemorySize);
```

{% endcode %}

现在，变量 `used_memory_size` 的值（byte）即为 Vector 对象实例 `vector_object` 已用内存大小（byte）。

### 如何获取 Vector 对象实例的有效元素个数？

我们需要调用 `vector_helper_get_count` 函数并将需要获取的内部计数器类型设置为 `VectorCountType::kCurrentElementCount` 以便获取 Vector 对象实例 vector\_object 有效元素个数：

{% code title="C" %}

```c
size_t current_element_count = vector_helper_get_count(vector_object, 
    VectorCountType::kCurrentElementCount);
```

{% endcode %}

现在，变量 `current_element_count` 的值即为 Vector 对象实例 `vector_object` 的有效元素个数。

### 如何获取 Vector 对象实例的最大可容纳元素个数上限？

我们需要调用 `vector_helper_get_count` 函数并将需要获取的内部计数器类型设置为 `VectorCountType::kMaxElementCount`以便获取 Vector 对象实例 vector\_object 最大可容纳元素个数上限：

{% code title="C" %}

```c
size_t max_element_count = vector_helper_get_count(vector_object, 
    VectorCountType::kMaxElementCount);
```

{% endcode %}

现在，变量 `max_element_count` 的值即为 Vector 对象实例 `vector_object` 的最大可容纳元素个数上限。

### 如何获取 Vector 对象实例的内存分配器运行次数？

我们需要调用 `vector_helper_get_count` 函数并将需要获取的内部计数器类型设置为 `VectorCountType::kCurrentMemoryAllocCount` 以便获取 Vector 对象实例 `vector_object` 的内存分配器运行次数：

{% code title="C" %}

```c
size_t alloc_memory_count = vector_helper_get_count(vector_object, 
    VectorCountType::kCurrentMemoryAllocCount);
```

{% endcode %}

现在，变量 `alloc_memory_count` 的值即为 Vector 对象实例 `vector_object` 的内存分配器运行次数。

### 如何获取 Vector 对象实例当前可容纳的元素个数？

我们需要调用 `vector_helper_get_capacity` 函数来获取 Vector 对象实例 `vector_object` 当前可用空闲内存可容纳的元素个数：

{% code title="C" %}

```c
size_t capacity_element_count = vector_helper_get_capacity(vector_object);
```

{% endcode %}

现在，变量 capacity\_element\_count 的值即为 Vector 对象实例 `vector_object` 当前可用空闲内存可容纳的元素个数。
