Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Accesso puntatore C++

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24

    Accesso puntatore C++

    Salve a tutti,non riesco a capire una cosa. Perchè se faccio

    unisgned char * metric;
    metric= (unsigned char *)malloc(4);
    os<<"\n"<<metric[100];

    non mi da errore??

    E anche facendo:

    free(metric)
    os<<"\n"<<metric[100];

    Non mi da errore?

    Mi sapreste dire se c'è un modo per risalire alla dimensione del puntatore? cioè se faccio

    metric= (char *)malloc(10);

    vorrei risalire al fatto che metric occupa 10 byte ma come faccio ? ( sizeof(metric) restituisce la grandezza dell'indirizzo di memoria e sizeof(*metric) restituisce la dimensione di unsigned char cioè 1 giusto?)

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    L' argomento della malloc è di tipo size_t (ma questo è C, non C++), per cui faresti meglio a passargli come argomento non il numero di byte, ma il numero di caratteri : sizeof(char)*10 ad esmepio.Poi è vero che un char ha dimensione 1 byte, ma gli altri tipi hanno una dimensione che dipende dalla macchina (come int ad esempio), per cui è buona norma fare così.
    Non puoi risalire alla dimensione della memoria allocata perchè è memoria allocata dinamicamente (è nell' heap), devi tenere traccia del numero di byte che allochi in qualche modo (in una variabile).
    Mentre puoi risalire alla dimensione degli array allocati staticamente perchè sono nello stack.

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.