相关疑难解决方法(0)

在内存中我的变量存储在C中?

通过考虑将内存分为四个部分:数据,堆,堆栈和代码,全局变量,静态变量,常量数据类型,局部变量(在函数中定义和声明),变量(在main函数中),指针,并动态分配空间(使用malloc和calloc)存储在内存中?

我认为他们将分配如下:

  • 全局变量------->数据
  • 静态变量------->数据
  • 常量数据类型----->代码
  • 局部变量(在函数中声明和定义)--------> stack
  • 在main函数-----> heap中声明和定义的变量
  • 指针(例如char *arr,int *arr)------->堆
  • 动态分配空间(使用malloc和calloc)-------->堆栈

我只是从C的角度来指这些变量.

如果我错了,请纠正我,因为我是C的新手.

c memory types memory-management

134
推荐指数
5
解决办法
20万
查看次数

C中的bss段

关于 " 关于Unix中的bss段和数据段 "的问题的答案之一中,我看到对bss的解释如下:

Bss是特殊的:.bss对象不占用目标文件中的任何空间,并且通过将未特别初始化的所有符号分组在一起,可以很容易地将它们一次归零.

但是当我在目标文件上使用size时,会生成代码:

#include <stdio.h>
int uninit_global_var;
int init_global_var=5;

int main()
{
   int local_var;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有以下内容

text    data      bss    dec     hex filename
1231     280      12    1523     5f3 a.out
Run Code Online (Sandbox Code Playgroud)

并根据具有全局范围的未初始化数据成员查看bss的增长情况.那么有人可以证明上述陈述的合理性吗?

c memory-management data-segment

8
推荐指数
2
解决办法
3930
查看次数

标签 统计

c ×2

memory-management ×2

data-segment ×1

memory ×1

types ×1