2013.10.4

来源:互联网 发布:pdm产品数据管理软件 编辑:程序博客网 时间:2024/04/30 08:52

1.struct与class区别:

当然C语言只存在struct,而且它只是个结构的封装体。

在C++中,struct与class只有两种区别:

1)默认继承权限:struct为public,class为private

2)默认成员访问权限:同上。

其他严格意义上来说都是一样的。

功能上class已经完全取代了struct,但是有些情况还会选择struct:一些轻量级并不需要严格封装的结构;为了与传统的api进行通讯有时不得不用struct;当然有时选择struct使得代码看起来更简洁一些。


2.程序的内存分配与例子

1)栈区(stack):由系统进行分配释放,存储局部变量,函数参数等。结构类似于Stack。

2)堆区(heap):又程序员进行分配释放,如果程序员没有释放则有os进行释放,比如malloc和new等操作。结构类似于链表。

3)全局区(静态区static):全局变量和static变量存储在一块。初始化的放在一块,为初始化的放在相邻一块。程序结束后由系统释放。

4)文字常量区:常量字符串。程序结束由系统释放。

5)代码区:存储二进制代码。

例子:

 //main.cpp    
  int   a   =   0;   全局初始化区    
  char   *p1;   全局未初始化区    
  main()    
  {    
  int   b;   栈    
  char   s[]   =   "abc";   栈    
  char   *p2;   栈    
  char   *p3   =   "123456";   123456/0在常量区,p3在栈上。    
  static   int   c   =0;   全局(静态)初始化区    
  p1   =   (char   *)malloc(10);    
  p2   =   (char   *)malloc(20);    
  分配得来得10和20字节的区域就在堆区。    
  strcpy(p1,   "123456");   123456/0放在常量区,编译器可能会将它与p3所指向的"123456"  
  优化成一个地方。    
  }    


原创粉丝点击