Implementing C++ wrappers or simply working with large data sets it would seem that utilizing size_t would be a better option. As an example hs_compile_lit_multi currently uses size_t and is similar in behavior to hs_scan_vector.
Existing Function:
hs_error_t hs_scan_vector(const hs_database *db, const char * const *data, const unsigned int *length, unsigned int count, unsigned int flags, hs_scratch *scratch, match_event_handler onEvent, void *context);
Proposed Alternative:
hs_error_t hs_scan_vector(const hs_database *db, const char * const *data, const size_t *length, size_t count, unsigned int flags, hs_scratch *scratch, match_event_handler onEvent, void *context);