摘要: C程序在进程中分为代码片段(text segment)、初始化数据片段(initialized data segment)、未初始化数据片段(uninitialized data segment)、栈(stack)以及堆(heap)。其内存分布如图1所示图1. C程序运行时内存布局代码片段往往是只读内容,为进程运行提供必要的操作步骤。初始化数据片段包含C代码中明确初始化了的变量值。未初始化数据片段(又称为bss段),包含C代码中未明确初始化的变量,该片段中数据在程序启动时被全部重置为0(按位全部填充为0)。栈用于存储程序运行时的自动局部变量(automatic variables)、函数调用. 阅读全文
posted @ 2012-07-09 15:56 o0慢节奏0o 阅读(427) 评论(1) 推荐(0) 编辑
摘要: 在Unix中有八种方式可以使终止进程:从主函数中返回调用exit函数调用_exit或_Exit函数最后一个线程从启动例程返回最后一个线程调用pthread_exit函数调用abort函数接收到一个信号并终止最后一个线程中响应取消请求1~5被称为正常终止,6~8为异常终止。exit函数被调用时将先执行一些清理工作(可由atexit函数指定),而_exit函数和_Exit函数被调用时将直接返回至内核中(_exit函数由ISO C标准定义,_Exit函数由POSIX.1标准定义)。当main函数自然返回(主函数结束或使用return返回)时,进程将自动调用exit函数进行扫尾工作。atexit函数可 阅读全文
posted @ 2012-07-09 15:25 o0慢节奏0o 阅读(420) 评论(0) 推荐(0) 编辑