【STL系列】都是vector惹的祸,不要存储vector里面的指针。
看如下代码
1 enum
2
3 {
4
5 Red = 1,
6
7 Green = 2
8
9 }
10
11 struct Apple
12
13 {
14
15 int iType;
16
17 int iWight;
18
19 };
20
21 int main()
22
23 {
24
25 vector<Apple> objApple;
26
27 vector<Apple*>pApple;
28
29 Apple obj1;
30
31 obj1.iType=Red ;
32
33 obj1.iWight = 10;
34
35 objApple.push_back(obj1);
36
37 pApple.push_back(&objApple.back());
38
39 objApple.iType = Green ;
40
41 objApple.iWight = 11;
42
43 objApple.push_back(obj1);
44
45 pApple.push_back(&objApple.back());
46
47 return 0;
48
49 }
恩,以上代码有错误吗?
总结,不要轻易保存vector里面的指针,它会自增长的噢,你不知道它的分配机制的。
解决的办法就是,你首先为vector预分配空间,恩,聪明的vector早已经为了准备好了函数
objApple.reserve(10);