Поскольку ваш вектор содержит int
s, вы не free
его элементы индивидуально.Простым вариантом является полное удаление free
, и убедитесь, что вы уменьшаете размер до того, как удалит элемент из вектора:
if (v->size == 0)
{
return 0;
}
v->size--;
*x = v->data[v->size]; // Note the asterisk
return 1;
Важно следить за обоимивыделенный размер и эффективный размер при реализации собственного динамического вектора.v->size
сообщает вам, сколько элементов установлено в вашем векторе, в то время как v->allocated_size
должно сообщать вам, сколько элементов вы можете вставить в вектор без перераспределения памяти в v->data
.