您的位置:首页 > 编程语言 > C语言/C++

关于c语言不同类型变量存放位置的个人理解

2016-12-30 14:34 666 查看
1 首先可以认为代码分成一下几段:

1text段(用来存放代码)

2data段

3bss段 (用来存放未初始化和初始化为0的全局变量)

该段在运行初始化时编译器会将bss段全部清0,所以全局变量没有初始化时值为0

而不是一个随机值

4 heap(堆:用来动态内存分配)

5 stack(栈:用来存放局部变量)

   栈是反复被调用的,所有局部变量的值是不确定的。

   堆在用完之后释放也不会清0,所以再次申请一块内存时,一般要先初始化为0

2 关于data段可以分为下面几类:

1静态局部变量和全局变量的存储地方是一样的,未初始化或者初始化为0的定义在bss段,初始化不为0的定义在data段

2其他段(用来存放初始化值不为0的全局变量)

3 关于data段和bss段的大小是编译器根据实际情况自动分配的。

4以上都是自己的理解,可能有误




有些数据可能被存放在代码段 如下:

char *p = "linux";

// const char *p = "linux";// 最正确的写法应该是这个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: