J'écris du code pour obtenir un vidage hexadécimal de la pile dans c. Je continue d'obtenir une erreur de compilation sur cette ligne suivante quand je la compile en utilisant gcc dans ubuntu mais elle compile bien sous gcc dans windows.Cast char * à int
char buffer[10];
for (int i=0;i<20;i++)
printf("0x%lx => 0x%lx\n", &(buffer[i]), ((long *)buffer)[i]);
Ceci est le message que le compilateur donne.
avertissement: format « lx% » attend de type « unsigned long int », mais l'argument 2 a le type « char * »
Quelqu'un peut-il s'il vous plaît me dire si je suis en train de faire quelque-chose ne va pas?
Le compilateur vous dit à peu près ce que vous faites mal. Et aussi tout est comportement indéfini :-( –
Vous accédez également à la mémoire non allouée, en particulier l'accès au tampon comme pointeur long –
@KerrekSB, merci pour votre contribution utile –