Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191017
  • 博文数量: 28
  • 博客积分: 1490
  • 博客等级: 上尉
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-17 10:01
文章分类
文章存档

2012年(3)

2011年(2)

2008年(2)

2007年(7)

2006年(14)

我的朋友

分类: C/C++

2007-01-18 20:01:13

这是今天我和同事上厕所后的对话:

背景: 同事比我先进厕所,但我先离开。我们都是去干大的。

同事回到座位后和我说:

-- 我们这是先进后出,属于堆栈。
-- 哈哈,那我岂不是拉在你身上了?             (我很得意)
-- 当然不是,堆栈是向下生长的,我在你上面的。   (他反击得很快)
-- 那你屁股是不是朝上,哈哈。。。             (我郁闷了一下,还是想到的反击的招数)
-- 我拉的冲力比较大,沾不着自己的。           (他在挣扎)
-- 我的冲力就更大了,刚好冲在你头顶,哈哈      (我今天正好拉肚子,呵呵)
...


题外话:

明白堆栈是向下生长的话,我们可以从这道题来看。同时也说明编写安全的代码是何其重要!

/* 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
$ ./test
safe: 511
buf: bugs
safe: 256 <-- not safe!!!

希望程序运行输出结果没让您感到吃惊 ;-)

阅读(1267) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~