- 論壇徽章:
- 1
|
- #include <iostream>
- using namespace std;
- int main()
- {
- char s[100];
- int n[100];
- double d[100];
- sprintf(s, "%p", s);
- cout << s << endl;
- sprintf(s, "%p", n);
- cout << s << endl;
- sprintf(s, "%p", d);
- cout << s << endl;
- {
- char c;
- sprintf(s, "%p", &c);
- cout << s << endl;
- }
- }
復(fù)制代碼
在AIX 5上用xlC_r編譯(g++類似)
2ff22100
2ff22168
2ff222f8
2ff22618
在HP-UX上用aCC編譯(g++類似)
77a70a10
77a70a74
77a70c08
77a70f28
在LINUX上
0xbfffe780
0xbfffe5f0
0xbfffe2d0
0xbfffe2cf
可以看出在AIX和HP上都是先把局部變量的空間先算出來(lái),然后從低到高分配
之前說(shuō)的溢出是因?yàn)橛玫膙isibroker線程有?臻g限制(只有64K?)分配了過(guò)多的局部變量的原因,而與地址增長(zhǎng)無(wú)關(guān) |
|