[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