PDA

Visualizza la versione completa : [C++] Deallocare un array


Dark867
03-12-2010, 09:28
Ciao, avrei bisogno di una mano per quanto riguarda la deallocazione dinamica.
Il problema è il seguente:
ho una funzione che alloca un array di interi e restituisce il puntatore void a quest'array:


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

Ora, io ho bisogno alla fine di deallocare quest'area ma se faccio qualcosa tipo

int* v = static_cast<int*>(puntatore_void);
delete []v
Il programma mi crasha, questo perché (immagino) lui non sa a QUANTI interi punterebbe v.
Come si potrebbe fare per risolvere questo problema?

(ah, prima che mi chiediate qualcosa tipo "perché complicarti la vita così?" vi dico subito che è la traccia di un esercizio di programmazione, perciò deve essere risolta così).

GliderKite
03-12-2010, 11:52
Per prima cosa chiariamoci subito: qual'è esattamente la traccia di questo esercizio?

MacApp
03-12-2010, 18:23
Sicuro che il problema sia quello?
A me il seguente non crasha:


#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;
}




$ g++ -Wall -Wextra -pedantic -ansi -Wconversion main.cpp
$ ./a.out
1024
bye bye...

Loading