Come sapere la dimensione di un vettore allocato dinamicamente?

di Anonimizzato18204 il
8 risposte
Vorrei capire come si fa a capire la dimensione di un vettore di strutture allocato dinamicamente...
Ho provato con formula sizeof(array)/sizeof(array[0]) ma naturalmente non va...

8 Risposte

  • E' una informazione di cui devi tenerne traccia tu.
  • Il C ed il C++ non supportano la possibilita' di conoscere la dimensione di vettori allocati con 'malloc/calloc' o 'new'.

    Ci sono dei trucchi, comunque:
    1) usare 'msize'
    2) usare malloc/calloc + 'placement new', e usare uno slot per tenere la dimensione del vettore.

    Se non sai di cosa sto parlando, e' corretto: sono tecniche di programmazione avanzate.
  • migliorabile ha scritto:


    Il C ed il C++ non supportano la possibilita' di conoscere la dimensione di vettori allocati con 'malloc/calloc' o 'new'.

    Ci sono dei trucchi, comunque:
    1) usare 'msize'
    2) usare malloc/calloc + 'placement new', e usare uno slot per tenere la dimensione del vettore.

    Se non sai di cosa sto parlando, e' corretto: sono tecniche di programmazione avanzate.
    Grazie mille per il consiglio, effettivamente non lo conosco ma cercherò sul web come utilizzarlo.
  • rairana ha scritto:


    migliorabile ha scritto:


    Il C ed il C++ non supportano la possibilita' di conoscere la dimensione di vettori allocati con 'malloc/calloc' o 'new'.

    Ci sono dei trucchi, comunque:
    1) usare 'msize'
    2) usare malloc/calloc + 'placement new', e usare uno slot per tenere la dimensione del vettore.

    Se non sai di cosa sto parlando, e' corretto: sono tecniche di programmazione avanzate.
    Grazie mille per il consiglio, effettivamente non lo conosco ma come di utilizza?
  • rairana ha scritto:


    rairana ha scritto:


    migliorabile ha scritto:


    Il C ed il C++ non supportano la possibilita' di conoscere la dimensione di vettori allocati con 'malloc/calloc' o 'new'.

    Ci sono dei trucchi, comunque:
    1) usare 'msize'
    2) usare malloc/calloc + 'placement new', e usare uno slot per tenere la dimensione del vettore.

    Se non sai di cosa sto parlando, e' corretto: sono tecniche di programmazione avanzate.
    Grazie mille per il consiglio, effettivamente non lo conosco ma come si utilizza?
  • Ti conviene inserire la struttura in una std::vector utilizzando push_back, se usi c++ (ma perché no?)
  • Grazie mille per i consigli !!!
  • Per gli utenti Linux taluni suggeriscono l'uso della funzione , dichiarata nel file d'intestazione "malloc.h" .
    Provandola, però, ottengo (come peraltro - mi pare - avverte anche la documentazione) valori superiori alla effettiva quantità di memoria allocata con le funzioni malloc/calloc.
Devi accedere o registrarti per scrivere nel forum
8 risposte