进程是已载入内存并受操作系统管理的程序实例的名字。
如图2-12a所示,进程的内存一般分为code(代码段)、data(数据段)、heap(堆段)、stack(栈段)等段。code 和text段包含了程序的指令和只读数据。它们可以被标记为只读,从而当试图对其对应的内存进行修改时,就会引发错误。data段包含了初始化数据、未初始化数据、表态变量以及全局变量。heap段则用于动态地分配进程内存。stac段是一个LIFO(last-in, first-out,后进先出)数据结构,用于支持函数的执行。
进程内存的精确组织形式依赖于操作系统、编译器、链接器以及载入器。图2-12b和图2-12c展示了UNIX和Win32上可能的进程内存组织形式。
以上文字介绍摘自《C和C++安全编码》第23,24页内容。要想了解栈结构请参考本书25页内容。 |
|