Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C]Malloc

  1. #1

    [C]Malloc

    Ciao a tutti.

    Stò provando a fare qualcosa con malloc solo che non riesco ad usarlo molto bene...

    pi=(int *) malloc(4)

    In teoria facendo così dovrebbe allocarmi nella memoria uno spazio di 4 byte e il suo indirizzo dovrebbe essere contenuto nella variabile pi.

    però se provo mi funziona solo con gli int e i char!!

    Non possono funzionare anche con gli altri tipi?!?

    vabbe ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Che problemi hai?
    codice:
    char *c;
    void *p;
    double *d;
    long int *li;
    
    c = (char *) malloc(sizeof(char)); // 1 carattere
    p = (void *) malloc(30); //30 byte
    d = (double *) malloc(4 * sizeof(double)) // 4 double
    li = (long int *) malloc(1 * sizeof(long int)) // 1 long int

  3. #3
    Scusami ma ho ancora dei dubbi...

    anche se dico malloc(1) lui cmq mi alloca sempre 4!!!

    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  4. #4
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    da cosa lo deduci che ti alloca sempre 4 byte?
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

  5. #5
    se faccio il sizeof sulla variabile...

    pi=(double *) malloc(30)

    faccio sizeof su pi e mi da 4!
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  6. #6
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    L'errore sta nel fatto che se fai
    codice:
    double *pi;
    // Uso il cout anche se è c++ solo per comodità
    cout << sizeof(pi);
    tu gli chiedi la dimensione in byte di un PUNTATORE a double e non di un double!

  7. #7
    Utente di HTML.it L'avatar di AR64S-H
    Registrato dal
    Jun 2002
    Messaggi
    568
    esatto quindi non ti da la grandezza della variabile puntatore. Se tu scrivessi sizeof(double) sarebbe corretto

  8. #8
    a grazie raga... Mo è tutto più chiaro

    Grazie a tutti ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

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.