Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] allocare memoria "on the fly", al volo

    Ho cercato nel forum relativamente ala funzione malloc() ma niente mi ha convinto...il mio problema è semplice...

    L'utente deve inserire n dati in un array e può continuare ad inserire dati fino a che non da un invio a vuoto (ovvero fino a che l'ultimo valore dell'array non è nullo). Come faccio a dichiarare questo array e come posso poi togliere l'ultima casella di memoria (che risulterà ovviamente vuota)?

    Grazie.
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  2. #2
    O con una malloc iniziale e una serie di realloc o usando una struttura di dati complessa, come una lista (che, se devi aggiungere un elemento alla volta, è di solito la soluzione migliore).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    un esempiuccio o una spiegazione più pratica...?

    io posso mettere:

    a = (int*)malloc(k*sizeof(int));

    però il k cambierà via via...no? Come posso dire "allocami via via tanta memoria quanta me ne serve"?



    il php non da di questi problemi
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  4. #4
    L'ultima casella di memoria non allocarla proprio
    es:
    leggi
    ripeti
    alloca e memorizza
    leggi
    finchè valore letto non vuoto
    Experience is what you get when you don’t get what you want

  5. #5
    int *a = (int*) malloc (<numero di elementi da allocare>*sizeof(int));
    Experience is what you get when you don’t get what you want

  6. #6
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  7. #7
    Originariamente inviato da Vre
    un esempiuccio o una spiegazione più pratica...?

    io posso mettere:

    a = (int*)malloc(k*sizeof(int));

    però il k cambierà via via...no? Come posso dire "allocami via via tanta memoria quanta me ne serve"?
    codice:
    #include <stdlib.h>
    void main()
    {
    int * myarray = 0;
    int size = 0;
    int counter;
    while(1)
    {
        myarray = realloc(myarray,(++size)*sizeof(int));
        printf("Inserisci un numero intero o del testo per uscire [%d]: ",size);
        if(scanf("%d", &myarray[size-1])==0) break;
    }
    size--;
    for(counter=0;counter<size;counter++)
        printf("%d\n",myarray[counter]);
    return;
    }
    il php non da di questi problemi
    Il PHP ti spaccia per array delle hashtables...
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Grazie a tutti, ho risolto!!
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

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.