I'm having an issue when running the code below. Every time I set the while loop to reach the .eof() it returns a std::bad_alloc
inFile.open(fileName, std::ios::in | std::ios::binary);
        if (inFile.is_open())
        {
            while (!inFile.eof())
            {
                read(inFile, readIn);
                vecMenu.push_back(readIn);
                menu.push_back(readIn);
                //count++;
            }
            std::cout << "File was loaded succesfully..." << std::endl;
            inFile.close();
        }
It runs fine if I set a predetermined number of iterations, but fails when I use the EOF funtion. Here's the code for the read function:
void read(std::fstream& file, std::string& str)
{
    if (file.is_open())
    {
        unsigned len;
        char *buf = nullptr;
        file.read(reinterpret_cast<char *>(&len), sizeof(unsigned));
        buf = new char[len + 1];
        file.read(buf, len);
        buf[len] = '\0';
        str = buf;
        std::cout << "Test: " << str << std::endl;
        delete[] buf;
    }
    else
    {
        std::cout << "File was not accessible" << std::endl;
    }
}
Any help you can provide is greatly appreciated. NOTE: I failed to mention that vecMenu is of type std::vector and menu is of type std::list
 
     
    