关于可执行文件的代码段、数据段、BSS段所存数据

文章介绍了程序编译后生成的可执行文件的三个主要段:代码段(.text段),包含只读的机器指令;数据段(Data段或初始化数据段),存储已初始化的全局和静态变量;BSS段(BlockStartedbySymbol段),用于未初始化的全局和静态变量,加载时自动清零。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言


源代码程序经过编译后,生成的可执行文件通常会分为以下几个主要段

一、代码段(.text段)

也称为文本段或指令段,包含程序的机器指令,即可执行的程序代码。
该段通常是只读的,并且在内存中是可执行的。

二、数据段(Data段或初始化数据段)

包含程序中已初始化的全局变量和静态变量的数据。
该段在程序加载时被初始化,并且在内存中是可读写的

三、BSS段(Block Started by Symbol段)

	也称为未初始化数据段,包含程序中未初始化的全局变量和静态变量的数据。
	该段在程序加载时会被清零,并且在内存中是可读写的。
### C++ 中 `cout` 的使用方法 #### 基本用法 在 C++ 中,`std::cout` 是标准库中的一个对象,用于向控制台输出数据。它通过重载的流插入运算符 (`<<`) 将数据发送到标准输出设备(通常是屏幕)。以下是基本使用的示例[^3]: ```cpp #include <iostream> int main() { std::cout << "Hello, world!" << std::endl; int x = 10; std::cout << "The value of x is: " << x << std::endl; return 0; } ``` 上述代码展示了如何打印字符串和变量。 --- #### 格式化输出 除了简单的输出功能外,`std::cout` 支持多种格式化选项来调整输出样式。这可以通过设置标志位或使用操纵器实现。 ##### 使用操纵器进行格式化 操纵器是一些预定义的对象,可以改变输出的行为而不影响后续操作。常见的操纵器包括 `hex`、`dec` 和 `scientific` 等。例如[^1]: ```cpp #include <iostream> using namespace std; int main() { // 十六进制输出 cout << hex << 255 << endl; // 默认十进制输出 cout << dec << 255 << endl; // 科学计数法输出 double num = 123.456; cout << scientific << num << endl; return 0; } ``` 以上代码分别实现了十六进制、十进制以及科学记数法的输出。 --- ##### 设置精度和宽度 为了更精确地控制浮点数或其他类型的显示方式,可以使用成员函数或者 `<iomanip>` 头文件中的工具。例如[^2]: ```cpp #include <iostream> #include <iomanip> // 提供 setprecision 函数 using namespace std; int main() { double pi = 3.141592653589793; // 设置浮点数保留小数点后 8 位 cout.setf(ios::fixed); cout.precision(8); cout << pi << endl; // 或者使用 iomanip 工具 cout << fixed << setprecision(5) << pi << endl; return 0; } ``` 此代码片段说明了两种不同的方法来指定数值的小数部分长度。 --- #### 清除先前状态的影响 当应用某些特定格式时,可能希望恢复原始行为而无需重新启动程序。为此提供了清除机制如 `resetiosflags()` 来移除之前施加的效果: ```cpp #include <iostream> using namespace std; int main(){ cout << hex << 16 << endl; // 输出 '10' (十六进制表示) cout << resetiosflags(ios::basefield) << 16 << endl; // 恢复为默认十进制形式 return 0; } ``` 这里展示的是如何先切换至另一种基数模式再恢复正常情况下的解释逻辑。 --- ### 总结 综上所述,在实际开发过程中灵活运用各种技术手段能够极大地提升用户体验并满足多样化需求场景下对于数据显示的要求。无论是基础的数据呈现还是复杂的定制化表现形式都可以借助于强大的C++语言特性轻松达成目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值