Как создать массив объектов разных размеров

хотелось бы получить массив arr объектов разных размеров и второй массив sizes хранящий размеры его объектов.

Немного конкретики, основная задача, хочу написать функцию void sort(void* arr, void* sizes, int nelts, xcmp_t cmp) nelts количество элементов, cmp сравнение, допустим она уже реализована.

я, наверное, понимаю как работать с arr но не понимаю как ее реализовать и задать


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Сложите размеры объектов и выделите общий буфер:

    unsigned sizes[] = {1, 2, 3};
    unsigned nelts = sizeof(sizes) / sizeof(sizes[0]);
    unsigned size = 0;
    for (unsigned i = 0; i < nelts; ++i) {
        size += sizes[i];
    }
    void *arr = malloc(size);

P.S. Объектами в этом общем буфере, вообще говоря, нельзя пользоваться. Но если соблюдать некоторые ограничения, то почему нет. Например, если объекты – строки символов.

→ Ссылка