BSS段、数据段、代码段、堆栈段的区别
2021-06-09 本文已影响0人
sml_tj
BSS 段(BSS segment):存放程序中未初始化的全局变量的一块内存区域。 属于静态内存分配
数据段(data segment):存放程序中已初始化的全局变量的一块内存区域。属于静态内存分配
代码段(code segment):存放程序执行代码(也可能会包含一些只读的常数变量,如字符串常量)的一块内存区域。在程序运行时已经确定,通常为只读,某些架也允许可写即修改程序。
堆(heap):存放进程运行中被动态分配的内存段。它的大小不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上;当利用free等函数释放内存时,被释放的内存从堆中被剔除。
栈(stack):又称堆栈,用户存放程序临时创建的局部变量,是交换临时数据的内存区域。不包括static声明的变量,static意味着在数据段即静态区中存放变量。