您好我有由海灣合作委員會(或g ++)對可能的堆棧優化問題..在FreeBSD下GCC堆棧優化
示例代碼(做UNIX方差事嗎?):
void main() {
char bing[100];
..
string buffer = ....;
..
}
我發現了什麼在gdb中該程序的核心轉儲是bing的地址 實際上低於該緩衝區(即,& bing [0] < &緩衝區)。
我認爲這完全是在教科書中被告知的相反。有沒有 是一些編譯器優化,重新組織這種 方式的堆棧佈局?
這似乎是唯一可能的解釋,但我不知道..
如果你有興趣,信息轉儲是由於緩衝區溢出通過 兵緩衝(但也印證&兵[0] < &緩衝區)。
謝謝!
刪除c標籤,因爲代碼不是c。 – 2011-02-23 01:44:04
@Stephen,你怎麼知道在'main'之前沒有'typedef char * string'? :-) – paxdiablo 2011-02-23 08:36:50