晕倒 看主贴,已经说过 用valgrind证实过了的确是调用了malloc。 //究竟是哪里调用的malloc?
//或者我不得不给你科普一下:C++标准里,整个循环体构成一个作用域,循环不结束,作用域不结束。
//初始化语句在这个作用域里只会执行一次——这是常识。
//如果还不明白,拜托阁下给我解释下下边这个循环的执行过程:
for (int i = 0; i >= 100; i++)
{
int j = 0;
j += i;
printf("%d, %d",i,j);
};
shan_ghost 发表于 2008-08-01 09:24 ![]()
我也是从Google 穿越过来的,别的不说,就说shan_ghost 贴的这段程序就能看出shan_ghost 够自以为是的,无语
这段程序里面的for body根本没法运行,int i = 0; i >= 100,真够神马的
改成int i = 0; i <= 100,结果无论是GCC还是G++编译,结果都证明j每次都被初始化成了0
./a.out
0, 0
1, 1
2, 2
3, 3
4, 4
5, 5
6, 6
7, 7
8, 8
9, 9
10, 10
11, 11
12, 12
13, 13
14, 14
15, 15
16, 16
17, 17
18, 18
19, 19
20, 20
21, 21
22, 22
23, 23
24, 24
25, 25
26, 26
27, 27
28, 28
29, 29
30, 30
31, 31
32, 32
33, 33
34, 34
35, 35
36, 36
37, 37
38, 38
39, 39
40, 40
41, 41
42, 42
43, 43
44, 44
45, 45
46, 46
47, 47
48, 48
49, 49
50, 50
51, 51
52, 52
53, 53
54, 54
55, 55
56, 56
57, 57
58, 58
59, 59
60, 60
61, 61
62, 62
63, 63
64, 64
65, 65
66, 66
67, 67
68, 68
69, 69
70, 70
71, 71
72, 72
73, 73
74, 74
75, 75
76, 76
77, 77
78, 78
79, 79
80, 80
81, 81
82, 82
83, 83
84, 84
85, 85
86, 86
87, 87
88, 88
89, 89
90, 90
91, 91
92, 92
93, 93
94, 94
95, 95
96, 96
97, 97
98, 98
99, 99
100, 100 |