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

    [C++] problemi con new e sizeof

    Ciao a tutti. Sto creando un programma in cui devo gestire degli array in maniera dinamica ma sto avendo dei problemi.

    Allora ho fatto un programmino semplice semplice per cercare di capire meglio il funzionamento di new ma i risultati che ho ottenuto mi hanno alquanto sorpreso. Questo è il codice:

    codice:
    #include <iostream> 
    int main () 
    {
      using namespace std;
    
      int size =7;
      int *h=new int [size];
    
      cout << sizeof(h) / sizeof(h[0])<< endl;
    
      return 0;
    }
    In teoria il programma dovrebbe darmi come output il numero di elementi dell'array h, quindi come output dovrebbe uscirmi 7, invece mi da 1. Non capisco perchè. Any idea? Dove sbaglio?

  2. #2

    Re: [C++] problemi con new e sizeof

    Originariamente inviato da gqterre
    In teoria il programma dovrebbe darmi come output il numero di elementi dell'array h, quindi come output dovrebbe uscirmi 7, invece mi da 1. Non capisco perchè. Any idea? Dove sbaglio?
    In base a quale teoria?

    h è un puntatore a intero, quindi sizeof (h) == sizeof (int *).

  3. #3
    Giustamente... allora come potrei fare per vedere quanti elementi ci sono nell'array?

  4. #4
    Originariamente inviato da gqterre
    Giustamente... allora come potrei fare per vedere quanti elementi ci sono nell'array?
    salvi il numero dei suoi elementi in una variabile e te la porti in giro.

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Oppure (ecco che mi picchiano) questo
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    Originariamente inviato da XWolverineX
    Oppure (ecco che mi picchiano) questo
    Già... tanto per incominciare perché:
    The _msize function returns the size, in bytes, of the memory block allocated by a call to calloc, malloc, or realloc.
    che non è la esattamente la stessa cosa di quanto allocato con new [];
    per penitenza, l'enunciazione degli altri motivi che ne sconsigliano l'utilizzo, invece li lascio a te..
    ;-)

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.