- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
正如我们所知,.bss 包含未初始化的变量。如果在 C 代码中,程序员在使用它们之前初始化变量。那么在执行 C 代码之前.bss 不必为零。
我说得对吗?
谢谢
最佳答案
在 C 代码中,任何具有静态存储持续时间的变量都被规范定义为初始化为 0(第 6.7.8 节初始化,第 10 段):
If an object that has static storage duration is not initialized explicitly, then:
- if it has pointer type, it is initialized to a null pointer;
- if it has arithmetic type, it is initialized to (positive or unsigned) zero;
- if it is an aggregate, every member is initialized (recursively) according to these rules;
- if it is a union, the first named member is initialized (recursively) according to these rules.
一些程序加载器会在开始时用零填充整个部分,而另一些程序加载器会“按需”填充它以提高性能。因此,虽然您在技术上是正确的,.bss
部分在 C 代码开始执行时可能真的包含全零,但逻辑上确实如此。无论如何,假设您有一个符合标准的工具链,您可以将其视为全零。
任何初始化为非零值的变量永远不会在 .bss
部分结束;它们在 .data
或 .rodata
部分中处理,具体取决于它们的特定特征。
关于c - .bss 部分没有零初始化怎么样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532334/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!