Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

l' operateur & (fetch address en C) en Java

0 views
Skip to first unread message

July

unread,
Oct 20, 2009, 9:42:55 AM10/20/09
to
Bonjour,

Je me demande s' il y a moyen pour connaitre, pour une variable v ou une
chemin d' expression genre x.f, son adreese m'emoire ou' elle a 'et'e
h'eberg'e comme dans le langage C, par &v ou &x.f.

Ou bien si on pouvais tricher en faisant sortir ce genre d' informaton
par un programme malin?

Merci bien.

Christian Laborde

unread,
Oct 20, 2009, 12:00:47 PM10/20/09
to
Quel est l'int�r�t de faire du C en Java ? Pour quoi faire ?
Salut

July a �crit :

--
Christian Laborde
La R�volution citoyenne, c'est sur : http://c.lab.over-blog.com/
Le forum des �lectrons libres :
http://electrons-libres.forumactif.fr
Les citoyens qui voient Net : http://www.netoyens.info
True E-mail : remove -no-spam-
Sentier des Vinches
CH 1091 Grandvaux
Suisse

Mayeul

unread,
Oct 20, 2009, 12:07:45 PM10/20/09
to
July wrote:
> Je me demande s' il y a moyen pour connaitre, pour une variable v ou une
> chemin d' expression genre x.f, son adreese m'emoire ou' elle a 'et'e
> h'eberg'e comme dans le langage C, par &v ou &x.f.

Nope.

> Ou bien si on pouvais tricher en faisant sortir ce genre d' informaton
> par un programme malin?

Dans une JVM, la notion, pour une variable, d'�tre � une adresse machine
pr�cise au cours de sa vie, est assez vague. Par cons�quent, une telle
chose n'est pas � proprement parler possible.
Je suppose toutefois que les d�veloppeurs et d�buggueurs de JVM ont
acc�s � une sorte d'�quivalent, pour v�rifier ce qui se passe.

--
Mayeul

July

unread,
Oct 20, 2009, 12:28:54 PM10/20/09
to

Avec toString() c,a marche. Merci.

Adrien Grand

unread,
Oct 20, 2009, 1:13:38 PM10/20/09
to
Bonsoir,

July a �crit :


>> Je me demande s' il y a moyen pour connaitre, pour une variable v ou une
>> chemin d' expression genre x.f, son adreese m'emoire ou' elle a 'et'e
>> h'eberg'e comme dans le langage C, par &v ou &x.f.
>

> Avec toString() c,a marche. Merci.

En fait, par d�faut (ie. dans java.lang.Object), toString() renvoie
${object.getCLass().getName()}@${object.hashCode()} (cf.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString())
donc l'information que tu r�cup�res est le hashCode. Mais rien dans la
sp�cification Java ne te dit que la valeur du hashCode est l'adresse de
l'objet comme le pr�cise la javadoc :

� As much as is reasonably practical, the hashCode method defined by
class Object does return distinct integers for distinct objects. (This
is typically implemented by converting the internal address of the
object into an integer, but this implementation technique is not
required by the Java programming language.) � (cf.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode())

Donc rien ne te dit qu'en passant � une autre impl�mentation de Java ce
sera toujours l'adresse de l'objet qui te sera renvoy�e.

--
Adrien

Samuel Devulder

unread,
Oct 21, 2009, 2:36:13 PM10/21/09
to
July a �crit :

> Bonjour,
>
> Je me demande s' il y a moyen pour connaitre, pour une variable v ou une
> chemin d' expression genre x.f, son adreese m'emoire ou' elle a 'et'e
> h'eberg'e comme dans le langage C, par &v ou &x.f.

L'adresse m�moire en java pur n'a pas de sens. Les objets sont tous
allou�s dans le tas et les variables sont des r�f�rences sur ces objets,
donc d�j� des adresses m�moire. Pour les objets primitifs (int, float),
l'adresse m�moire a encore moins de sens. Seul leur valeur importe.

Maintenant si tu veux l'interfacer avec un truc qui a besoin d'une
addresse m�moire, utilises l'API jni pour acceder aux champs des objets.
Attention, je crois qu'on y a pas acc�s directement, mais via des
m�thode d'accesseur: get/set. Le plus proche de la notion d'adresse
m�moire est d'utiliser cot� java un tableau d'objet primitif et du cot�
C (jni) de r�cup�rer l'adresse du 1er element du tableau.

Par contre si tu veux parler de l'adresse m�moire pour "inspecter" les
variables, il y a l'API du debugger qui te permet de faire des trucs
assez pouss�.


> Ou bien si on pouvais tricher en faisant sortir ce genre d' informaton
> par un programme malin?

Si tu utilises je JNI, fais bien attention � punaiser ton objet en
m�moire le temps de son usage en utilisant correctement l'API car la JVM
peut parfaitement reloger les objets pour �viter la fragmentation m�moire.

Bref: tout cela pour dire que l'adresse m�moire d'un objet et pire d'une
variable (sur la pile) n'a pas trop de sens dans le contexte java o�
tout est r�f�rence (hormis les types primitifs).

sam.

Patrick

unread,
Oct 22, 2009, 3:09:15 AM10/22/09
to
Le 20/10/2009 15:42, July a �crit :

>
> Je me demande s' il y a moyen pour connaitre, pour une variable v ou une
> chemin d' expression genre x.f, son adreese m'emoire ou' elle a 'et'e
> h'eberg'e comme dans le langage C, par &v ou &x.f.
>

System.identityHashCode (Object)

(Mais rien ne garantit que c'est vraiment une adresse m�moire.)

TestMan

unread,
Oct 22, 2009, 4:02:16 AM10/22/09
to

+1

Je rajouterais par rapport � la question initiale qu'il existe bien une
fa�on de connaitre le positionement m�moire de ces �l�ments via JNI.

De la m�me fa�on que l'on peut �numerer tous les objets d'une m�me
classe par exemple...

Mais sinc�rement, outre le fait que cel� n�cessite du code JNI "sympa"
ce ne doit jamais �tre utilis� dans un problamme traditionel.

A+
TM

Wykaaa

unread,
Oct 22, 2009, 6:13:57 AM10/22/09
to
Patrick a �crit :
On peut m�me garantir que �a ne retourne pas une adresse m�moire puisque
�a retourne un hashcode...

Confondre adresse m�moire et hashcode c'est vraiment...confondant
puisque les adresses m�moires peuvent �tre "hashcod�es" et qu'une cl� de
hashcode n'a rien � voir avec une adresse m�moire !

Pour revenir � la question du posteur d'origine, sa question n'a pas de
sens en Java et on se demande m�me quelle est l'utilit� de conna�tre
l'adresse m�moire d'un objet dans un programme.
D'ailleurs, sur les machines actuelles, avec la pagination m�moire et
plein d'autres dispositifs concernant la gestion m�moire (comme le
ramasse-miette), il est impossible de conna�tre la "vraie" adresse
m�moire. D'ailleurs on s'en contrefout !

Il y a m�me des ordinateurs dans lesquels, lorsqu'un "banc m�moire" est
en panne, il est "oubli�" et les adresses m�moires situ�es de part et
d'autre de cette zone m�moire en panne sont concat�n�es. Dans de telles
machines, l'adresse "r�elle" n'a, en v�rit�, aucune r�alit�...

0 new messages