[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Pregunta técnica sobre C



El dom, 23 de abr de 2000, a las 12:00:10 +0200, Francisco José Avila Bermejo dijo:
> > 	memcpy( a, b, sizeof(b) );
> > 
> >  ¿no? (digo yo). Igual (respondo rapido) para tu ejemplo no se
> >  puede, pero si no recuerdo mal, es asi :)
> 
> 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? :)

 Vamos, a lo mejor me estoy rayando, pero yo creo que es asi :?

 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.

 :?
 me lo voy a pensar (es que estoy online y pensando rapido :).
 salu2
-- 
Windows es multitarea real: puede ejecutar 2 bugs simultáneamente.

 _-----------------------------------------------------_
|  NoP / Compiler          --       nop @ todolinux.org |
|-------------------------------------------------------|
|  POWERED BY - Linux RedHat 6.0  -  Reg. User #74.821  |
|             http://www.ctv.es/USERS/sromero           |
 ~-----------------------------------------------------~


Reply to: