这是今天我和同事上厕所后的对话:
背景: 同事比我先进厕所,但我先离开。我们都是去干大的。
同事回到座位后和我说:
-- 我们这是先进后出,属于堆栈。
-- 哈哈,那我岂不是拉在你身上了? (我很得意)
-- 当然不是,堆栈是向下生长的,我在你上面的。 (他反击得很快)
-- 那你屁股是不是朝上,哈哈。。。 (我郁闷了一下,还是想到的反击的招数)
-- 我拉的冲力比较大,沾不着自己的。 (他在挣扎)
-- 我的冲力就更大了,刚好冲在你头顶,哈哈 (我今天正好拉肚子,呵呵)
...
题外话:
明白堆栈是向下生长的话,我们可以从这道题来看。同时也说明编写安全的代码是何其重要!
/* stacktest.c */
#include <stdio.h>
#include <string.h>
int main()
{
int safe = 256 + 255;
char buf[4];
printf("safe: %d\n", safe);
strcpy(buf, "bugs");
printf("buf: %s\n", buf);
printf("safe: %d <-- not safe!!! \n", safe);
return 0;
}
|
$ gcc -o test stacktest.c -Wall$ ./testsafe: 511
buf: bugs
safe: 256 <-- not safe!!!
希望程序运行输出结果没让您感到吃惊 ;-)
阅读(1267) | 评论(3) | 转发(0) |