Вы определенно не хотите alloca()
.Это распределение, которое находится в стеке функции и длится только в течение вызова.Он позволяет вам иметь динамические массивы, которые исчезают при возврате функции (в C ++ вы могли бы сделать это с RAII, но в C alloca
это был единственный выход).
Вам просто нужен приведение в вашем распределении.Попробуйте i = (unsigned int *)malloc(StringLength() * sizeof(*i))
.Обратите внимание на sizeof(*i)
.Это размер одного элемента: sizeof(i)
- это размер указателя, который вряд ли будет связан с тем, что внутри.