You're trying to assign to an array. That's not going to happen. The array is where it is, at the size that it had initially. It can't take a new address and size.
variables
needs to be a pointer.
struct _VariableVector {
int size; // elements full in array
int capacity; // total available elements
Variable *variables;
};