福田建网站多少钱,学设计的网站有哪些内容,sem跟seo的区别,网站转化路径前言#xff1a;这些内存段在程序运行时起着不同的作用#xff0c;有不同的分配方式和存储内容。对于 C 语言程序员来说#xff0c;了解这些内存段的特性和用途有助于更好地理解内存管理、变量的存储位置以及程序执行过程中的内存分配情况
1. 代码段 (Code Segment) 内容这些内存段在程序运行时起着不同的作用有不同的分配方式和存储内容。对于 C 语言程序员来说了解这些内存段的特性和用途有助于更好地理解内存管理、变量的存储位置以及程序执行过程中的内存分配情况
1. 代码段 (Code Segment) 内容代码段也称为文本段是包含频繁执行代码的内存区域。特点代码段通常是只读的以避免被缓冲区溢出等编程错误覆盖的风险。不包含该代码段不包含局部变量(在C语言中也称为自动变量)、全局变量等程序变量。字符串字面量基于C实现代码段也可以包含只读字符串。例如当你执行printf(Hello, world)时字符串Hello, world会在代码/文本段中创建。你可以在Linux 中使用size命令验证这一点。 进一步阅读代码段 2. 数据段 (Data Segment)
数据段被分成以下两部分通常位于堆区域的下方或者在某些实现中位于栈的上方但数据段永远不会位于堆和栈区域之间
a. 未初始化数据段 (BSS 段) 内容包含未初始化的全局变量包括指针变量、未初始化的常量全局变量、未初始化的局部静态变量。存储位置任何未初始化的全局或静态局部变量都将存储在未初始化的数据段中。例子全局变量如 int globalVar; 或静态局部变量如 static int localStatic; 会存储在未初始化数据段中。注意如果你声明一个全局变量并将其初始化为0或NULL那么它仍然会进入未初始化的数据段或bss。进一步阅读了解更多关于未初始化数据段的信息未初始化的数据段 b. 初始化数据段 内容包含初始化的全局变量包括指针变量、初始化的常量全局变量、初始化的局部静态变量。例子全局变量如 int globalVar 1; 或静态局部变量如 static int localStatic 1; 会存储在初始化数据段中。细分这个段可以进一步分为初始化只读区和初始化读写区初始化全局常量变量放在初始化只读区而可以在运行时修改值的变量放在初始化读写区。大小这个段的大小由程序源代码中值的大小决定并且在运行时不会改变。进一步阅读初始化数据段 3. 栈段 (Stack Segment) 内容用于存储函数内部创建的变量如函数的局部变量包括指针变量、函数参数、返回地址等。特点函数执行结束后存储在栈中的变量将被删除。进一步阅读栈段 4. 堆段 (Heap Segment) 内容这个段是为了支持动态内存分配。如果程序员想动态分配一些内存那么在C语言中可以使用malloc,calloc或realloc方法来完成。例子例如当 int* ptr malloc(sizeof(int) * 2) 时会在堆上分配8字节内存并将分配的内存地址返回并存储在 ptr 变量中。存储位置取决于声明/使用方式指针变量 ptr 可能位于栈或数据段上。 这些内存段在 C 语言中扮演着重要的角色了解它们的特性和用途有助于程序员更好地理解内存管理和程序执行过程中的内存分配情况。