public void addString(Object base, long offset, int len) {
            assert nextId < count;

            int start = lastEnd;
            int end = start + len;
            MemoryUtil.setInt(dataAddr + (nextId << 2), start);
            //MemoryUtil.setInt(dataAddr + ((nextId + 1) << 2), end);
            MemoryUtil.copyMemory(base, offset, null, dataAddr + totalIndexLen + start, len);

            nextId++;
            lastEnd = end;
        }
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