La fonction tellg () donne une mauvaise taille de fichier?

J'ai fait un exemple de projet de lecture d'un fichier dans un buffer.
Lorsque j'utilise le tellg (), fonction qu'il me donne une valeur plus grande que la
la fonction de lecture est en fait de lire le fichier. Je pense qu'il y a un bug.

voici mon code:

EDIT:

    void read_file (const char* name, int *size , char*& buffer)
    {
        ifstream file;

        file.open(name,ios::in|ios::binary);
        *size = 0;
        if (file.is_open())
        {
            //get length of file
            file.seekg(0,std::ios_base::end);
            int length = *size = file.tellg();
            file.seekg(0,std::ios_base::beg);

            //allocate buffer in size of file
            buffer = new char[length];

            //read
            file.read(buffer,length);
                    cout << file.gcount() << endl;
         }
         file.close();
    }

principal:

  void main()
  {
    int size = 0;
    char* buffer = NULL;
    read_file("File.txt",&size,buffer);

    for (int i = 0; i < size; i++)
        cout << buffer[i];
    cout << endl; 
  }

source d'informationauteur Elior