static修饰符声明属于类型本身,而不属于特定的对象。因此使用时不用实例化,可直接调用。
静态全局变量,会在全局数据区分配内存,如果不显示初始化,那么就会隐式初始化为0。
静态局部变量,会在全局数据区分配内存,如果不显示初始化,那么就会隐式初始化为0。
其作用域为局部作用域,当定义它的语句块结束时,其作用域随之结束。
静态成员函数,...
C++内存管理: 变量和对象在内存中的分配都是编译器在编译程序时安排好的,但同样带来了不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。动态内存分配解决了这个问题。C/C++定义了4个内存区间:代码区,全局数据区,栈区,堆区。定义变量是在编译程序的时候就进行的静态存储分配,所有的动态分配基本都是在堆区进行的。不过是不能说的这么绝对的,与编译器和库都是有关联的。函数的参数未必通过堆栈进行...
分类:
编程语言 时间:
2015-05-04 10:02:30
阅读次数:
188
静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图:代码区 //low address全局数据区堆区栈区 //high address一般程序把新产生的动态数据存放在堆区,函数...
分类:
其他好文 时间:
2015-04-27 12:36:41
阅读次数:
192
从操作系统的角度讲,线程间通信比进程间通信要容易的多,因为线程之间可以共享进程的内存空间。因此,他们可以共享位于进程全局数据区和栈和堆上的所有内容。
唯一只属于某个线程的就是线程的栈-------它可以存放只属于线程的对象。
下面逐一解读线程间通信方式:
1. 共享进程的变量
这是最基本的通信方式,但要注意不要共享线程栈上的变量,因为它随时可能被某个线程销毁,而另一个线程就无法访问它了...
分类:
编程语言 时间:
2015-03-29 12:21:27
阅读次数:
322
在局部变量前加上“static”关键字,就成了静态局部变量。静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用 时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。静态局部变量的初始化与全局变量类似.如果不为其显式初始化,则C++自动为其 初始化为...
分类:
其他好文 时间:
2014-12-28 22:06:06
阅读次数:
240
前言:类型定义后,存储在哪里?变量定义后存储在哪里?程序代码存储在哪里?
1. 全局数据区和程序代码区
类型定义后,存在内存的只读区域,不可见,无法取得地址。类变量记录的是地址偏移,与对象绑定才能取得地址。
变量:
全局变量存在全局数据区,全局静态变量存在全局数据区的全局静态变量段。(两者相临或相差几个字节)。
名空间变量存在全局数据区,和全局变量同一存储区域,名空间静态变量存在全局...
分类:
其他好文 时间:
2014-12-14 20:01:38
阅读次数:
248
图示C内存分配程序代码区存放函数体的二进制代码全局数据区全局变量和静态变量的存储是放在一起的。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。常量数据存放在另一个区域里。这些数据在程序结束后由系统释放。我们所说的BSS段(bss segment)通常是...
分类:
其他好文 时间:
2014-11-03 16:04:48
阅读次数:
276
使用具有权威说服力的实例辨明C++中的malloc与new
问题:
很多人都知道malloc与new都是用来申请空间用的,开辟空间来源于堆中。但是在C++中却很少用malloc去申请空间,为什么会这样?
下面小编会以一个很有说服力的例子来说明,相信大家一看就能明白。
C++程序的格局可分为4个区,注意是“格局”,
1、全局数据区 //其中...
分类:
编程语言 时间:
2014-10-09 16:31:28
阅读次数:
233
1. c++提供了太多的存储对象的方式: 堆 栈 全局数据区2. c++提供了太多的访问对象的方式: 变量指针 引用这样, 对于对象的操作就有9种不同的组合了, 所以c++显得比较复杂. 所以想灵活熟练的使用c++, 就得对上面所述的9中对象的操作了如指掌才可以.
分类:
编程语言 时间:
2014-10-02 17:13:33
阅读次数:
152
1、全部变量、局部变量
局部变量:定义在函数内部的变量,作用域为函数内部 eg: void fun(){ int x;}
全部变量:只能定义一次,多次引用。作用域为整个文件。
若同一个源文件,全局变量和局部变量重名是,在局部变量的作用域,全部变量不起作用。
关键词:
全部变量:函数外定义+全局可见+存放在内存的全局数据区+未初始化的的时候为0
局部变量:函数内定义+函数内可见+存放在栈区,函数退出变量消失+不显式初始化内容不可预知...
分类:
其他好文 时间:
2014-09-25 14:13:48
阅读次数:
244