Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84

    [C++] allocare memoria con Realloc()

    Buongiorno

    devo allocare dinamicamente la memoria di un array con Realloc().
    Ho una cosa del genere:

    codice:
        if(!array)
    
    
            array=(Type*) calloc(1,sizeof(Type));
    
        else
    
            array=(Type*)realloc(array,(cont+1)*sizeof(Type));    
    
     
    
        array[cont].setName(....);
    
    
        cont++;
    Ho inizializzato il cont=0 nel costruttore della mia classe e liberato la memoria nel distruttore.
    Dove sbaglio? Dopo il primo inserimento non mi fa andare avanti. Dice Access violation...
    Ultima modifica di user1989; 21-06-2016 a 09:18

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A parte il fatto che potresti usare i vector ...

    In ogni caso, sei sicuro che, in partenza, array sia NULL e cont sia uguale a 0 ?

    E comunque, date queste condizioni, puoi usare solo la realloc con

    array=(Type*)realloc(array,(cont+1)*sizeof(Type));
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84
    Quote Originariamente inviata da oregon Visualizza il messaggio
    A parte il fatto che potresti usare i vector ...

    In ogni caso, sei sicuro che, in partenza, array sia NULL e cont sia uguale a 0 ?

    E comunque, date queste condizioni, puoi usare solo la realloc con

    array=(Type*)realloc(array,(cont+1)*sizeof(Type));
    Ho risolto da sola...Il problema era che usavo AnsiString, ho cambiato usando char* e và.
    codice:
    if(!array)
    array=(Type*) calloc(1,sizeof(Type));
    else{
    array=(Type*) realloc(array,(count+1)*sizeof(Type));
    array[count].Init();
    }
    AnsiString n=Edit->Text;
    array[c].setCampo(n.c_str());
    c++;
    count++;
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Rimane il fatto che non c'è bisogno della calloc ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Rimane il fatto che non c'è bisogno della calloc ...
    Perchè?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da user1989 Visualizza il messaggio
    Perchè?
    Perché la realloc può allocare anche il primo elemento
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Perché la realloc può allocare anche il primo elemento
    ok, grazie

Tag per questa discussione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.