Wieso ist die Adresse nicht gleich?

27/11/2014 - 19:32 von Heinz-Mario Frühbeis | Report spam
Hallo!

#include <iostream>
#include <vector>
#include <string>
using namespace std;

typedef std::pair<std::string, int> td_Pair;
typedef std::vector<td_Pair> td_Vec;

typedef std::pair<std::string, td_Pair*> td_Pair1;
typedef std::vector<td_Pair1> td_Vec1;

td_Vec vec;
td_Vec1 vec1;

void GetAdress(){
cout << 0 << &vec[0] << "";
cout << 1 << &vec[1] << "";
cout << 1 << &vec[2] << "";
}

int main(){
td_Pair nPair;
td_Pair1 nPair1;
nPair.first = "PAIR_1";
nPair.second = 11;
vec.push_back(nPair);
nPair1.first = "PAIR_1_1";
nPair1.second = &vec[0];
vec1.push_back(nPair1);
cout << 0 << &vec[0] << "";

nPair.first = "PAIR_2";
nPair.second = 22;
vec.push_back(nPair);
nPair1.first = "PAIR_2_1";
nPair1.second = &vec[1];
vec1.push_back(nPair1);
cout << 0 << &vec[1] << "";

nPair.first = "PAIR_3";
nPair.second = 33;
vec.push_back(nPair);
nPair1.first = "PAIR_3_1";
nPair1.second = &vec[2];
vec1.push_back(nPair1);
cout << 0 << &vec[2] << "";
cout << "";

GetAdress();
return 0;
}

Ausgabe (Bsp.):
00xd56040
00xd560f0
00xd561c0

00xd561a0
10xd561b0
10xd561c0

Ich hatte eigentlich gehofft, daß man daraus (also als Grundlage) eine
verschachtelte Struktur _auf_ _dem_ _Stack_ erstellen kann, aber in
meinem Programm bekam ich Speicherzugriffsfehler, wobei ich mal annehme,
daß es aus den abweichenden Adressen resultiert (so wie in diesem
Programm, quasi).

In meinem Programm sieht eine Ausgabe z. Bsp. so aus:
Erstellen:
TEST A EB_IDA 0x61f5c0 0x16b0808
TEST C Bin 0x16b0808 0x16b3758
TEST C Icons 0x16b0808 0x16b6d88
TEST C Includes 0x16b0808 0x16b9b58
TEST C Libs 0x16b0808 0x16b9c28
TEST C Home 0x16b0808 0x16be718
Testen:
FIND FORWARD A EB_IDA 0x61f5c0 0x16b0808
FIND FORWARD B Bin 0x16b0808 0x16be3d8
FIND FORWARD B Icons 0x16b0808 0x16be4a8
FIND FORWARD B Includes 0x16b0808 0x16be578
FIND FORWARD B Libs 0x16b0808 0x16be648
FIND FORWARD B Home 0x16b0808 0x16be718
Wobei bei hier die Adressen von EB_IDA und Home _immer_ identisch sind...

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Alexander Wolf
27/11/2014 - 20:56 | Warnen spam
On 2014-11-27, Heinz-Mario Frà¼hbeis wrote:
[...]
int main(){
td_Pair nPair;
td_Pair1 nPair1;
nPair.first = "PAIR_1";
nPair.second = 11;
vec.push_back(nPair);
nPair1.first = "PAIR_1_1";
nPair1.second = &vec[0];



Überlege mal was passiert wenn der Container zu klein wird um alle
Elemente aufzunehmen?

Salute,
Alex
Ich genieße alles dankbar, was von außen kommt,
aber ich hànge an nichts.
(Wilhelm von Humboldt)

Ähnliche fragen