Sicuro che il problema sia quello?
A me il seguente non crasha:
codice:
#include <algorithm>
#include <functional>
#include <iostream>

static void* crea_array () {
    int* v = new int[1024];//esempio
    return static_cast<void*>(v);
}

int main (void){
    void * puntatore_void = crea_array ();
    int* v = static_cast<int*>(puntatore_void);
    std::fill_n (v, 1024, 3);
    std::cout << std::count (v, v + 1024, 3) << std::endl;
    delete []v;
    std::cout << "bye bye..." << std::endl;
    return 0;
}
codice:
$ g++ -Wall -Wextra -pedantic -ansi -Wconversion main.cpp
$ ./a.out
1024
bye bye...