Averiguar La Dirección De Memoria De Una Variable


Ir a la página 1, 2  Siguiente

Objetivo: Averiguar La Dirección De Memoria De Una Variable
Hola!.

¿ Se puede averiguar en gambas la dirección de memoria donde se encuentra almacenado un valor asignado a una variable ?.

Si tenemos la asignación:

numero = 1000

¿ Se puede saber a que dirección de memoria apunta numero ?.

Saludos

Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
La idea de esta pregunta es para comprobar una cosa.

Imaginar que tenemos las variables A y B.

- 5 se almacena en A
- A + 12 se almacena en B
- Ahora cambiamos el contenido de A.
- 7 se almacena en A

Mi idea es comprobar si la dirección de memoria de A, ha cambiado con la nueva asignación.
Que sera lo más seguro.

Saludos

Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
Os muestro un vídeo de un curso de programación fundamental de Python, donde trata las variables y las asignaciones de memoria.
Puede que todo esto sea muy didactico. Sabemos de sobra que es una variable, como la entiende el interprete.

Nosotros no le decimos que en una dirección de memoria almacene un valor, directamente, el interprete se encarga de eso.
Sería un poco engorroso.

Como siempre los subtítulos no son tan buenos.


Link


Espero que os guste.

Saludos

Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
Shell escribió: [Ver mensaje]
La idea de esta pregunta es para comprobar una cosa.

Imaginar que tenemos las variables A y B.

- 5 se almacena en A
- A + 12 se almacena en B
- Ahora cambiamos el contenido de A.
- 7 se almacena en A

Mi idea es comprobar si la dirección de memoria de A, ha cambiado con la nueva asignación.
Que sera lo más seguro.

Saludos


No tiene por qué cambiar si su contenido ocupa lo mismo. Si almacena un entero, ocupa 4 bytes, por lo tanto, si le vuelves a asignar otro entero ocupará lo mismo y no hará falta ocupar otra posición en memoria. De todos modos, a menos que uses punteros con librerías externas, en gambas no debe preocuparte mucho ese tema. Si quieres experimentar con memoria y punteros usa C.

Saludos

Perfil MP  
Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
Shell escribió: [Ver mensaje]

¿ Se puede averiguar en gambas la dirección de memoria donde se encuentra almacenado un valor asignado a una variable ?.


Ehmmm... dado que un Puntero contiene una dirección de memoria, y después que la función VarPtr() regresa un Puntero que apunta a los contenidos de una variable en la memoria, propono:

Public Sub Main()

Dim numero As Integer = 1000
Dim p As Pointer

p = VarPtr(numero)

Print p

End

última edición por vuott el Martes, 02 Septiembre 2014, 00:18; editado 1 vez
Perfil MP  
Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
jguardon escribió: [Ver mensaje]
Shell escribió: [Ver mensaje]

Mi idea es comprobar si la dirección de memoria de A, ha cambiado con la nueva asignación.
Que sera lo más seguro.Saludos


No tiene por qué cambiar si su contenido ocupa lo mismo. Si almacena un entero, ocupa 4 bytes, por lo tanto, si le vuelves a asignar otro entero ocupará lo mismo y no hará falta ocupar otra posición en memoria.


Por lo tanto:

Dim numero As Integer = 1000
Dim p As Pointer

p = VarPtr(numero)
Print p

numero = 132423455
p = VarPtr(numero)
Print p


...demuestra que la dirección no cambia durante la ejecución del programa para el mismo tipo de variable (en este caso Integer).

Pero para cualquier otro Tipo de longitud no fija, puede cambiar. De hecho el siguiente código lo demuestra:

Dim cad As String = "esto es una cadena"
Dim p As Pointer

p = VarPtr(cad)
Print p

cad = "esto es otra cadena mucho mas larga que la anterior"
p = VarPtr(cad)
Print p


Por cierto, vuott, buen aporte. No me acordaba de la función VarPtr(), la consideraba sólo útil para uso con librerías externas.

Saludos

Perfil MP  
Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
Gracias a los dos por vuestra ayuda.

Esta noche lo veo mejor con algo más de tiempo.
He visto algo que tengo que comentar, pero no se relaciona con esto.

Saludos

Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
[quote user="jguardon" post="23007"][quote user="jguardon" post="22995"]
Shell escribió: [Ver mensaje]

Por cierto, vuott, buen aporte.

Saludos

Gracias, saludos muchos a ti tambien, jguardon.


Shell escribió: [Ver mensaje]
Gracias a los dos por vuestra ayuda.

Saludos

Saludos, Shell.

última edición por vuott el Martes, 02 Septiembre 2014, 00:22; editado 1 vez
Perfil MP  
Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
esta pensando que ese código esta interesante y se puede aplicar a seguridad, por ejemplo en la variable de la contraseña sabiendo el lugar de la memoria que la podemos sobrescribir para no dejar expuesta la contraseña en ese lugar de la memoria.

Objetivo: Re: Averiguar La Dirección De Memoria De Una Variable
V3ctor:

Citar:
la podemos sobrescribir para no dejar expuesta la contraseña en ese lugar de la memoria.

Si haces eso, pierdes el valor de la contraseña. No tiene sentido y no te da seguridad.

Para asegurar contraseña lo que tienes que hacer es encriptarlas.

http://jsbsan.blogspot.com.es/2011/...componente.html

Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.459s (PHP: -79% SQL: 179%)
Consultas SQL: 47 - Debug off - GZIP Activado