El dom, 23 abr 2000, Santiago Romero escribi�:
> > Pero es que tiene punteros y punteros a punteros, y el sizeof() no puede
saber > > el tamano de un vector (punteros de punteros) din�mico. Eso funciona,
pero es > > muy probable que de un core en un momento dado, ya que no reservas
toda la > > memoria que necesitas.
>
> creo que si que funcionaria: con memcpy copias EL PUNTERO, la direccion,
> tu interes NO es copiar EL CONTENIDO: al copiar el puntero puedes acceder
> al contenido. SI coges un puntero (o puntero a puntero) y lo metes en
> otro sitio, eso te sigue permitiendo acceder a la posicion de memoria
> apuntada. No se si me explico: tu al copiar la estructura vas a dejar en
> el destino los mismos valores que tienen los campos origen, entre ellos
> el valor del puntero que apunta a un array de punteros. Con ese puntero
> DESDE EL DESTINO sigues pudiendo acceder al array de punteros, �no? :)
He aqu� la cuestion, my dear friend: yo quiero duplicar toda esa informaci�n,
ya que sino, al modificar una cosa apuntada por un puntero, se modifica tambi�n
en el otro lado. Bueno la verdad es que es la misma informaci�n al apuntar los
dos punteros al mismo sitio. Vaya galimat�as!!.
Todo este embrollo viene a colaci�n de que la funci�n gethostbyname() devuelve
un puntero est�tico a una estructura del tipo hostent. Y este es el problema,
que es un puntero est�tico y siempre apunta al mismo sitio. Si haces un
gethostbyname() de dos nombres de hosts seguidos, la segunda llamada a la
funci�n machaca lo generado por la primera. Para descubrir que esto pasaba
porque as� est� hecho y no por un puntero perdido mio, pues me he pasado un
ratito muy agradable, depurando en busca de un error inexistente :-)
Es que estoy haciendo una estructura de clases en C++ parecida a la de Java.
Obviamente hay una parte muy peque�a implementada, pero est� chulo. He hecho
tambi�n una clase Socket para las comunicaciones y funciona correctamente.
Despu�s tocar� una clase POP3 para trabajar con servidores POP3 y otra SMTP
para los servidores SMTP. Creo que est� quedando bien y muy simple de utilizar.
Programa mucho en Java y la verdad es que es muy c�modo, pero muy lento. Y una
buena jerarqu�a de clases hecha en C++ har�a ganar mucho a este lenguaje. Lo de
los templates me parece una aberraci�n en un lenguaje orientado a objetos.
Cuando tengo algo m�s, igual pido colaboraci�n a la gente, porque para uno solo
creo que es una labor tit�nica.
Con todas esas clases, desarrollar aplicaciones ser�a mucho m�s sencillo y
r�pido. Con los lenguajes orientados a objeto se consigue un nivel muy bueno de
modularidad y un c�digo muy limpo, claro y reutilizable. No me gusta hacer
proyectos grandes en C porque luego te vuelves loco para encontrar los fallos o
para ampliar funcionalidades. En mi opini�n se programa m�s r�pido y f�cil en
un lenguaje orientado a objetos, si tiene buenas clases.
Si se hiciera algo como lo que yo quiero para C++ y se extendiera, crecer�an
los programas para Linux, y su calidad.
> Vamos, a lo mejor me estoy rayando, pero yo creo que es asi :?
No te est�s colando, es correcto lo que dices, pero con la salvedad de que yo
SI quiero DUPLICAR esa informaci�n.
> Imagina el ejemplo
>
> struct {
> int *puntero;
> } a, b;
>
>
> si a.puntero apunta a 1234; al copiar en b la estructura a,
> b.puntero contendr� el mismo valor y apuntar� al mismo lugar.
> Si en lugar de ser un solo puntero es **, como el ** apunta
> a vector[0], sigue siendo el mismo tama�o.
Claro, pero si modifico "a.puntero", tambi�n afecta a "b.puntero", y en mi caso
esto no es deseable.
--
-----------------------------------------------------------------------------
* Multitarea: posibilidad de que dos bugs ocurran simultaneamente.
-------------
Registered Linux user number 134.596
E-mail: [EMAIL PROTECTED] Powered by Debian 2.1 slink
-----------------------------------------------------------------------------