addr addr 33 44
addr がどこにでもあり、両方が同じであることを期待しています。
gccでそれを取得します。しかし、MSVCで私は得る
8D3678 0 9257096 9257096
8D3678 0 9257104 9257104
8D3678 0 9257112 9257112
なんと!?! 警告/エラーは表示されません。最後の 2 つの値が 33 44 ではない理由と、それらが同じである (そして非常に間違っている) 理由を説明したい人はいますか?
#include <cstdio>
#include <vector>
class Person{
public:
int age;
int weight;
Person(int age, int weight):age(age), weight(weight){}
};
int main() {
std::vector<Person> ls;
Person p(33, 44);
ls.push_back(p);
ls.push_back(p);
ls.push_back(p);
for(auto i=ls.begin();i!=ls.end();++i){
printf("%X %X %d %d\n", i, &(*i), (*i).age, (*i).weight);
}
}