您好我有由海湾合作委员会(或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