[C con Clase] Segmentation Fault a la hora de leer un archivo
Steven Davidson
srd4121 en njit.edu
Lun Abr 2 20:04:13 CEST 2012
Hola Asdrúbal,
On 4/2/2012 1:54 PM, Asdrúbal Iván Suárez Rivera wrote:
> Buenas tardes, disculpen si la pregunta es un poco newbie, resulta
> que tengo un problema a la hora de leer un archivo, sospecho que en
> las últimas líneas, pero no he tenido posibilidad de debuggearlo,
> este es el código que ando usando:
>
[CORTE]
> vector<int> & leer()
> {
> string linea;
> vector<int> ret_val;
> int temp;
[CORTE]
> return ret_val;
> }
El problema está aquí. Estás retornando 'ret_val' por referencia. Sin
embargo, este objeto es local a esta función, por lo que se destruirá al
finalizar el ámbito de esta función. Esto significa que estás retornando
basura.
Tienes dos opciones:
1. Retorna un nuevo objeto escribiendo:
vector<int> leer();
2. Acepta el objeto del vector como parámetro, para asegurar que tal
objeto existe después de la invocación de esta función. Esto es,
vector<int> & leer( vector<int> &ret_val );
No es necesario retornar nada, porque lo hacemos indirectamente a través
del parámetro, pero así puedes "encadenar" invocaciones con el vector.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase