Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435

    [C++] Deallocare un array

    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:

    codice:
    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
    codice:
     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ì).

  2. #2
    Per prima cosa chiariamoci subito: qual'è esattamente la traccia di questo esercizio?
    Fracty - The Fractal Generator



    If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.

  3. #3
    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.