habe einen Quellecode der unter i386 mit gcc prima funktioniert. Unter amd_64 kommt ein Speicherzugriffsfehler. Ich habe den Code analysiert und bin auf die Stelle gestoßen, welche Probleme macht:
Code: Alles auswählen
....
int libsmtp_int_bytes;
char libsmtp_int_rec_buffer[4096];
char *libsmtp_int_temp_buffer=NULL;
printf("libsmtp_int_temp_buffer: %p\n",&libsmtp_int_temp_buffer);
printf("libsmtp_int_temp_buffer: %s\n",libsmtp_int_temp_buffer);
...
Code: Alles auswählen
...
int libsmtp_int_read (GString *libsmtp_gstring_read, struct libsmtp_session_struct *libsmtp_session, int type)
{
int libsmtp_int_bytes;
char libsmtp_int_rec_buffer[4096];
char *libsmtp_int_temp_buffer=NULL;
..
..
..
libsmtp_int_temp_buffer = strtok (libsmtp_int_rec_buffer, " ");
printf(" Adresse ist %p\n",&libsmtp_int_temp_buffer);
printf ("Inhalt ist %s\n",libsmtp_int_temp_buffer);
....
....
Die Adresse der Variable kann ich auslesen. libsmtp_int_rec_buffer enthält eine Zeichenkette .Wenn ich den Inhalt von libsmtp_int_temp_buffer anzeigen lassen will gibt es einen Speicherzugriffsfehler, aber nur unter amd_64 nicht unter i386. Nur strtok() nutze ich davor. Da, strtok(), kann doch kein Unterschied zwischen amd_64 und i386 sein?libsmtp_int_temp_buffer: 0x7fffc52e36a8
libsmtp_int_temp_buffer: (null)
libsmtp_int_rec_buffer 1: 220 mx.klm-rtz.com ESMTP SonicWALL (xxxxxx)
Speicherzugriffsfehler
Da ich leider kein Fachmann bin würde ich mich über Tipps freuen.
Gruß und Dank Markus