Punteros :s
Publicado por Nacho (4 intervenciones) el 19/01/2015 00:05:09
(Si gustan pueden saltarse la biblia que escribí antes de la pregunta, e ir directo a las preguntas que estan abajo en negrita.)
Buenas, primero disculparme porque si les soy sincero no indague mucho en google para buscar la respuesta :C
Recordé este foro que participe activamente durante un tiempo así que decidí "porque no mejor en vez de responder pregunto algo" :3.
Mi lenguaje principal es Java, pero ya me aburrí un poco de el y ahora le estoy dando duro a C++, el tema es el siguiente, como sabrán en Java no se maneja el concepto de punteros (por ahí se encuentran unos anarquistas que dicen que java maneja punteros, pero como no se de esto no puedo opinar).
Algo en tiendo al respecto porque estudie un poco de Assembler hace un tiempo atrás, y bueno el tema de las direcciones de memoria son muy importante en aquel lenguaje.
El problema es el siguiente, lo único que hice fue crear una variable int, común y corriente y asignarla a un puntero, luego imprimí con cout su dirección de memoria. mi sorpresa fue que al ejecutar el programa por segunda vez la dirección es la misma, y luego ejecuto el programa dos veces, al mismo tiempo (asignando distintos valores de variables ya si por las dudas) y tienen la misma dirección.
Como entenderán esto me dejo un poco confundido, pensé en un principio que la asignación de memoria de una variable varia la primera y la segunda vez que se ejecuta, por el solo hecho de que esta se asigna dependiendo el uso actual de la memoria, y por segundo pensé que cada dirección era única. (como una PK)
entonces mi pregunta es la siguiente?
La asignación de memoria es relativa al programa, quiero decir, yo realmente no accedo a la dirección real, sino a una virtual que me entrega mi programa para poder trabajar con variables integras en el mismo? (si es así supongo que es por tema de seguridad)
en caso de que esto sea correcto como accedo a la dirección real?, mi pregunta es porque quiero intentar cambiar una variable del programa A, desde el programa B
Buenas, primero disculparme porque si les soy sincero no indague mucho en google para buscar la respuesta :C
Recordé este foro que participe activamente durante un tiempo así que decidí "porque no mejor en vez de responder pregunto algo" :3.
Mi lenguaje principal es Java, pero ya me aburrí un poco de el y ahora le estoy dando duro a C++, el tema es el siguiente, como sabrán en Java no se maneja el concepto de punteros (por ahí se encuentran unos anarquistas que dicen que java maneja punteros, pero como no se de esto no puedo opinar).
Algo en tiendo al respecto porque estudie un poco de Assembler hace un tiempo atrás, y bueno el tema de las direcciones de memoria son muy importante en aquel lenguaje.
El problema es el siguiente, lo único que hice fue crear una variable int, común y corriente y asignarla a un puntero, luego imprimí con cout su dirección de memoria. mi sorpresa fue que al ejecutar el programa por segunda vez la dirección es la misma, y luego ejecuto el programa dos veces, al mismo tiempo (asignando distintos valores de variables ya si por las dudas) y tienen la misma dirección.
Como entenderán esto me dejo un poco confundido, pensé en un principio que la asignación de memoria de una variable varia la primera y la segunda vez que se ejecuta, por el solo hecho de que esta se asigna dependiendo el uso actual de la memoria, y por segundo pensé que cada dirección era única. (como una PK)
entonces mi pregunta es la siguiente?
La asignación de memoria es relativa al programa, quiero decir, yo realmente no accedo a la dirección real, sino a una virtual que me entrega mi programa para poder trabajar con variables integras en el mismo? (si es así supongo que es por tema de seguridad)
en caso de que esto sea correcto como accedo a la dirección real?, mi pregunta es porque quiero intentar cambiar una variable del programa A, desde el programa B
Valora esta pregunta
0