public static StringsStruct from(List<byte[]> strings, Wrapper<ByteSlice> memContainer) {
        int totalIndexLen = (strings.size() + 1) << 2;
        int totalStringLen = 0;
        for (byte[] b : strings) {
            totalStringLen += b.length;
        }

        if (memContainer.value == null) {
            memContainer.value = ByteSlice.allocateDirect(totalIndexLen + totalStringLen);
        }
        return from(strings, ((ByteSlice) memContainer.value).address());
    }
A class help explain the string values' strcuture in an offheap byte array.

| offset0 | offset1 | offset2 | offset3(str_total_len) | s0 | s1 | s2 |
| <-                   index(int)                   -> |<- str_data ->|
indexr-common/src/main/java/io/indexr/data/StringsStruct.java