Всем привет.
Такой вопрос. Имеется массив чисел (тип может быть char, int, int_64 и т.д.), определенный вне main
int a[] = {10, 1, 1, 0, 0, 2, 2, 3, 4, 5, 10};
Нужно написать функцию, которая копирует этот массив в стек, создавая массив такого же типа.
void *copytostack(void *source, int n){ // копирует в стек по ссылке
n = n * sizeof(source[0]);
void *dest = malloc(n);
memcpy(dest, source, n);
return dest;
}
Проблема в том, что sizeof(source[0]), получая указатель на неопределенный тип, возвращает 1 (1 байт), вне зависимости от начального типа.
Может быть есть возможность создать custom-массив, у которого sizeof будет отдавать заранее заданное количество байтов? Или просто передавать функции количество байтов под один элемент?