[C con Clase] Comprobar validez de un puntero, miembro de una estructura
marcelinux
marcelinator en gmail.com
Mar Feb 23 22:45:51 CET 2016
Hola, de nuevo.
Estoy repasando el segundo ejemplo de http://c.conclase.net/curso/index.php?cap=022#inicio
donde se usa una función para sustituir el operador de asignación.
Lo que no me acaba de funcionar es:
if(a.mem) delete[] a.mem;
En ejecución me produce un error "Segmentation fault."
Lo he separado en dos líneas:
if(a.mem)
delete[] a.mem;
Lo sigo por Debug y el error se produce en "delete[] a.mem;"
Que, para mí, tiene lógica, puesto que no se ha "creado".
Lo que no entiendo es ¿por qué "if(a.mem)" evalúa verdadero.
De hecho, el valor que me devuelve gdb print a.mem es
(int *) 0x1
Y si los desreferencio
print *a.mem
Cannot access memory at address 0x1
No sé qué es lo que tengo mal.
Estoy usando GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
con la aplicación compilada con g++ (Debian 4.9.2-10) 4.9.2
sobre un sistema Debian 8 jessie amd64.
Más información sobre la lista de distribución Cconclase