一、内存分析
(1)栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等, 在可执行文件a.out中不存在分配栈区的空间。
(2)堆(heap):一般有程序员自身调用(malloc,calloc函数)来分配空间, 通过free函数释放空间, 但可能会因为程序员的编程失误造成内存的泄漏,另外当程序结束的时候其动态申请的所有空间都将会由系统回收再利用。
(3)数据段(data)
(1)栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等, 在可执行文件a.out中不存在分配栈区的空间。
(2)堆(heap):一般有程序员自身调用(malloc,calloc函数)来分配空间, 通过free函数释放空间, 但可能会因为程序员的编程失误造成内存的泄漏,另外当程序结束的时候其动态申请的所有空间都将会由系统回收再利用。
(3)数据段(data)