Pero resulta, que al generar dinamicamente la memoria necesaria para almacenar cada byte del archivo, y asignarsela al puntero, ocurre algo inusual: No es posible acceder al contenido guardado en el puntero fuera de la función.
Para que por favor puedan solucionar mi problema, les dejo mi codigo fuente:
Código C++:
Ver original
#include <iostream> #include <fstream> #include <stdio.h> using namespace std; int load_file_in_memory(char *buffer, char path[]); int main(){ char *buffer; char path[] = "C:\\codigo.txt"; load_file_in_memory(buffer, path); cout << "Accediendo al puntero desde fuera de la funcion: " << endl; cout << buffer << endl; } int load_file_in_memory(char *buffer, char path[]){ /************************************************************* CARGA ARCHIVO EN MEMORIA. *************************************************************/ unsigned int size_of_file; std::ifstream file; file.open(path, ios::binary); ///Siempre verifica que el archivo haya abierto correctamente if(file.bad()){ cout << "Lo siento. Fallo el archivo!!" << endl; return -1; } ///Se posiciona en el ultimo byte para obtener tamaño. file.seekg(0, ios::end); ///Se va a la úlitma posicion size_of_file = file.tellg(); ///Obtiene cual es dicha posicion, es decir la longitud de archivo file.seekg(0, ios::beg); ///Va al principio el puntero. buffer = new char[size_of_file]; file.read(buffer, size_of_file); file.close(); cout << "Mirando el contenido del puntero dentro de la funcion" << endl; cout << buffer << endl; /************************************************************* FIN DE CARGA EN MEMORIA **************************************************************/ }
Para que puedan probar el codigo, deberían crear un fichero de prueba, con algún texto. Así podrán observar lo que digo.
Gracias de antemano.