要理解大多数缓冲区溢出的本质,首先需要理解当典型程序运行时机器中的内存是如何分配的。在许多系统上,每个进程都有其自己的虚拟地址空间,它们以某种方式映射到实际内存。我们不会关心描述用来将虚拟地址空间映射成基本体系结构的确切机制。我们只关心理论上允许寻址大块连续内存的进程,在某些情况下坏家伙会滥用这些内存中的某些部分。在高级别上,几乎总是存在几个不同的内存区域:程序参数和程序环境。程序堆栈,它通常在程序执行时增长。通常,它向下朝堆增长。堆,它也在程序执行时增长。通常,它向上朝堆栈增长。BSS段,它包