Hola, ¿Como están? Tengo el siguiente problema: Yo, he querido leer el contenido de un archivo en memoria y subirlo en memoria para trabajar más fácilmente con él. La función que hace eso, ya la tengo hecha.
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.