2012-03-19 10 views
5

Soy nuevo en C++ y la programación y estoy escribiendo un pequeño programa como parte de una tarea y lo hice funcionar, pero estoy tratando de hacer que el código funcione más rápido, entonces estoy tratando de obtener mi vector para almacenar un puntero a una estructura.Puntero, cadena y error de desbordamiento

La estructura es

struct info { 
    string all; 
    string word; 
} 

Y lo que hice fue, tratando de asignar la cadena 'todo' un valor;

info* v; 
v->all = str; 

Y str se define como

string str = "Hello"; 

El error que me dieron durante la marcha era BGF;

File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string 
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len) 
OverflowError: signed integer is greater than maximum 

Cualquier pista sobre lo que podría estar causando esto?

Respuesta

2

v no se ha inicializado.

Que sea

info* v = new info; 
v->all = str; 

Pero en realidad debería mostrar más código. No está claro qué intenta hacer y cómo almacenar un puntero hará que el código se ejecute más rápido.

+0

Y recuerde acerca de 'eliminar v', cuando ya no es necesario. –

+0

Gracias por la respuesta. Al hacer que v sea un puntero a la información, agregué deliberadamente un '*' y me olvidé del 'nuevo' ... – michcs

1

info* v; simplemente define puntero que se dirigen a alguna localización de memoria aleatoria, para usarlo es necesario asignar una memoria de info y hacer de este punto puntero a esta memoria. Puede hacerlo usando new de esta manera: info* v = new info();. Tenga en cuenta que debe liberar la memoria usted mismo haciendo delete v;.

0

No puede usar una ubicación de memoria a menos que esté asignada. info *v crea solo un puntero a la ubicación de la memoria y en este momento está apuntando a la basura. tiene que asignarle memoria usando new. después de new si está usando el str para asignarle un valor.

o también puede utilizar la asignación de memoria estática

Cuestiones relacionadas