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;
}