Вот как сделать ваш код на C ++ (не тот код C, который у вас есть на самом деле)
#include <fstream>
#include <sstream>
#include <string>
std::string read_back(const char* filename)
{
std::ifstream file(filename, std::ios_base::binary);
std::ostringstream buffer;
buffer << file.rdbuf();
return buffer.str();
}
Возвращает std :: string, а не char *, но это хорошо, потому что вы неУ вас нет проблемы с запоминанием необходимости освобождать выделенную память.
Как было объяснено, вы неправильно понимаете, как работают указатели и размер.Избегайте указателей, они сложны.