22/07/10 19:29
Pitagora
Partiamo dal presupposto che sto studiando la funzione malloc più calloc realoc free ...
malloc ha solo un parametro, cioè un numero intero senza segno che ha il compito di aggiungere bytes al nostro puntatore.
Se facessi in questo modo
In questo programma, vengono salvati 7 numeri interi del valore di 28 bytes all'inizio riga ne alloco solo 8 .... C'è qualche cosa che mi sfugge ?
malloc ha solo un parametro, cioè un numero intero senza segno che ha il compito di aggiungere bytes al nostro puntatore.
Se facessi in questo modo
int *p = malloc(8);in teoria dovrei memorizzare solo due interi. Un intero corrisponde a 4 byte 4 * 2 = 8 byte. In teoria dovrebbe essere così ma nella pratica non lo è affatto:
#include <stdio.h> #include <stdlib.h> int main (void) { int i; int *p = malloc(8); for (i = 0; i < 8; i++) { *(p + i) = rand(); } for (i = 0; i < 8; i++) { printf("*(p + %d) = %d\n", i, *(p + i)); } return 0; }
In questo programma, vengono salvati 7 numeri interi del valore di 28 bytes all'inizio riga ne alloco solo 8 .... C'è qualche cosa che mi sfugge ?
aaa