ciao, ho un incompresione sulla funzione malloc , e un problema con sizeof.
nel codice alloco dinamicamente , in un puntatore a char 5 byte , poi con strcpy gli "inserisco" una striga più lunga di 5 caratteri , non da nessun errore e funziona come
se la potesse contenere , ma dove viene salvata la stringa ? io mi aspetterei
un errore e il blocco del programma !
vorrei visuallizzare quanti byte sono stati allocati ,prima tramite la funzione malloc , poi
dopo la funzione relloc , avevo pensato a sizeof(puntatore) o sizeof(*puntatore) ,
ma mostrano lo stesso numero di byte , qualunque sia la quantità di memoria allocata!
se può essere utile , utilizzo ide devc++.
codice:#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char *x; char parola[]="parola_molto_lunga"; x=(char*)malloc(sizeof(char)*5); //printf("byte allocati in x %d\n",sizeof(x)); //come visuallizare quanti byte sono stati allocati ?? strcpy(x,parola); //perche x può contenere più di cinque caratteri ? puts(parola); /* x=(char*)relloc(x,sizeof(char)*20); printf("byte allocati in x %d\n",sizeof(x)); */ system("PAUSE"); return 0; }

Rispondi quotando