Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Struktur und Speicheradressen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.12.2006, 17:39 Uhr
~raZe
Gast


Hallo Leute.

könnte mir jemand sagen warum die Speicheradresse des time_t um 4 Byte verschoben ist? Ich benutze Microsoft Visual Studio 8.


C++:
struct out_header {
    char mode;
    char cont;
    char tmp[2];
    int  len;
    char name[20];
    int inst;
    int param;
    time_t time;
}  *ptr_out_header;




C++:
//Zuweisung des Speicherbereichs, wo die Daten liegen.
ptr_out_header = (struct out_header *) data;

...

// Mich verzweifeln lassende Kontrollausgaben:
ptrc = &ptr_out_header->mode;
printf("ADRESSE (ptr_out_header->mode): %x (%c)\n", ptrc, ptr_out_header->mode);
ptrc = &ptr_out_header->cont;
printf("ADRESSE (ptr_out_header->cont): %x (%c)\n", ptrc, ptr_out_header->cont);
ptrc = &ptr_out_header->tmp;
printf("ADRESSE (ptr_out_header->tmp): %x (%s)\n", ptrc, ptr_out_header->tmp);
ptrc = &ptr_out_header->len;
printf("ADRESSE (ptr_out_header->len): %x (%d)\n", ptrc, ptr_out_header->len);
ptrc = &ptr_out_header->name;
printf("ADRESSE (ptr_out_header->name): %x (%s)\n", ptrc, ptr_out_header->name);
ptrc = &ptr_out_header->inst;
printf("ADRESSE (ptr_out_header->inst): %x (%d)\n", ptrc, ptr_out_header->inst);
ptrc = &ptr_out_header->param;
printf("ADRESSE (ptr_out_header->param): %x (%d)\n", ptrc, ptr_out_header->param);
ptrc = &ptr_out_header->time;
printf("ADRESSE (ptr_out_header->time): %x (%d)\n", ptrc, ptr_out_header->time);




und as liefert mir leider:


Code:
ADRESSE (ptr_out_header->inst) 47645c (208)
ADRESSE (ptr_out_header->param) 476460 (123)
ADRESSE (ptr_out_header->time) 47646[b]8[/b] ([schwachsinnige Sekunden seit 1970])



Ich verstehe einfach nciht, warum time nicht auf der 476464 statt 8 liegt... leider war es mit einer alten Version des Programms noch auf der 4 und der Server, der die Daten schickt sendet den Zeitstempel noch immer an dieser Position... und da brauche ich die auch... hat sich vielleicht c-seitig irgend etwas geändert?

HILFE
MfG
raZe

mod edit: BENUTZE DIE BOARD TAGS SELBER

Dieser Post wurde am 08.12.2006 um 21:44 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.12.2006, 18:27 Uhr
Pler
Einer von Vielen
(Operator)


Du benutzt nicht zufällig neuerdings einen 64-Bit-Rechner?


Zitat:
warum time nicht auf der 476464 statt 8 liegt...
ist bestimmt genau anders rum gemeint?

Kannst du noch den Quellcode als übersetzungsfähiges Programm posten?
Würd das mal ausprobieren, aber hab kein Bock jetzt was zu schreiben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.12.2006, 22:28 Uhr
ao

(Operator)



C++:
#pragma pack(push)
#pragma pack(1)
struct out_header {
    char mode;
    char cont;
    char tmp[2];
    int  len;
    char name[20];
    int inst;
    int param;
    time_t time;
}  *ptr_out_header;
#pragma pack (pop)



Versuchs mal so.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.12.2006, 11:41 Uhr
~raZe
Gast


Danke, oh Du mein C-Gott namens ao!
Hat wunderbar geklappt. Jeden Tag lerne ich was neues über C

*Daumen hoch für ao hält*

MfG
raZe

und bis zur nächsten Hürde
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.12.2006, 14:30 Uhr
0xdeadbeef
Gott
(Operator)


Das ist aber höchst compilerspezifisch.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: