Ciao, anch'io ho provato il tuo codice, ma con un compilatore Borland, e la fread() mi restituisce un numero di caratteri, o meglio di "items", inferiore al numero effettivo aprendo il file in modalità "text", ma il numero risulta corretto se lo si apre in modalità "binary".

codice:
#include <stdio.h>
#include <malloc.h>
#include <mem.h>

int main()
{
	FILE *fstream;
	int dim_file, x, items;
	char *my_buffer;

	fstream = fopen("prova.txt","rb");
	if(fstream==NULL)
	{
		printf("Errore in apertura del file.\n");
		return -1;
	}
	printf("File aperto correttamente.\n");

	fseek(fstream, 0, SEEK_END);
	dim_file = ftell(fstream);
	rewind(fstream);
	
	my_buffer = (char *) malloc((sizeof(char)*dim_file)+1);

	items = fread(my_buffer, sizeof(char), dim_file, fstream);
	printf("dimen file = %d\n", dim_file);
	printf("items read = %d\n", items);
	if( items < dim_file)
		printf("Errore nella lettura del file.\n");
	else
		printf("File letto correttamente.\n");
  
	my_buffer[dim_file] = 0;    
	printf("La stringa %c:\n\"%s\"\n", 138, my_buffer);  
  
	fclose(fstream);
	free(my_buffer);

	getchar();
	return 0;
}