亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3250 | 回復(fù): 11
打印 上一主題 下一主題

你們有沒(méi)有遇到過(guò)棧地址增長(zhǎng)的情況? [復(fù)制鏈接]

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-12-13 15:42 |只看該作者 |倒序?yàn)g覽
今天有個(gè)程序core掉了,調(diào)試了一下,跟蹤臨時(shí)變量的地址,發(fā)現(xiàn)很奇怪的現(xiàn)象:
地址一開始遞減,跑到一個(gè)動(dòng)態(tài)庫(kù)so中,就變成遞增了,象這樣:
程序開始:30322d98
調(diào)用動(dòng)態(tài)庫(kù)前:30321db0
動(dòng)態(tài)庫(kù)中(分配臨時(shí)變量前):30317238
動(dòng)態(tài)庫(kù)中(分配臨時(shí)變量后):30321190

可以看出分配了大約40多k的臨時(shí)變量,但這些變量地址怎么是遞增的?增到一定程序,把原來(lái)的棧破壞掉了,程序core dump

環(huán)境是AIX 5
誰(shuí)遇到過(guò)沒(méi)有?幫忙解釋一下?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2005-12-13 17:20 |只看該作者
對(duì)不起,我解釋不了。
我是來(lái)求學(xué)的。
24點(diǎn)的算法。
你原來(lái)的注釋看不太明白,你有更好的方法計(jì)算嗎?
你有空能發(fā)個(gè)注釋給我嗎?
cheesae@tom.com

先謝謝了!

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
3 [報(bào)告]
發(fā)表于 2005-12-13 17:25 |只看該作者
樓上的不要這樣啊~~~
那都是好久以前的程序了,我總得自己看一下再說(shuō)吧?

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2005-12-13 17:36 |只看該作者
呵呵,對(duì)不起!
等您看完,有空的時(shí)候,不忘給我發(fā)一個(gè)注釋。
謝謝了

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2005-12-13 20:55 |只看該作者
沒(méi)遇到過(guò)。共享庫(kù)的函數(shù),其中的自動(dòng)變量也是在棧里,不該與普通函數(shù)的壓棧方向不一樣啊

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2005-12-13 21:57 |只看該作者
LZ能否說(shuō)明一下, 幾個(gè)數(shù)值是怎么得到的.

這是32位PPC吧.

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
7 [報(bào)告]
發(fā)表于 2005-12-14 09:07 |只看該作者
  1. #include <iostream>
  2. using namespace std;

  3. int main()
  4. {
  5.     char s[100];
  6.     int  n[100];
  7.     double d[100];

  8.     sprintf(s, "%p", s);
  9.     cout << s << endl;
  10.     sprintf(s, "%p", n);
  11.     cout << s << endl;
  12.     sprintf(s, "%p", d);
  13.     cout << s << endl;
  14.     {
  15.         char c;
  16.         sprintf(s, "%p", &c);
  17.         cout << s << endl;
  18.     }
  19. }
復(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)

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2005-12-14 16:19 |只看該作者
aix真是個(gè)怪物,我半星期來(lái)忙得焦頭爛額的調(diào)試,竟然發(fā)現(xiàn)Sys V的IPC之前,ftok全給我返回-1 。 只好定義了個(gè)wrapper,自己返回一個(gè)key,問(wèn)題才解決了。 在yuxh大哥的帖子上搭車感慨下。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2005-12-14 22:30 |只看該作者
64K是有點(diǎn)小.

棧地址遞減是相對(duì)于stack frame之間吧, 同一stack frame里的臨時(shí)變量地址應(yīng)當(dāng)是compiler自由選擇的.

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2005-12-14 22:47 |只看該作者
如果系統(tǒng)實(shí)現(xiàn)了 alloc, 可以用它來(lái)測(cè)試棧的增長(zhǎng)方向。

[ 本帖最后由 win_hate 于 2005-12-15 00:14 編輯 ]
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP