c++ new表达式

  • 思考如何让一个变量在当前函数结束之后可以继续使用
  1.  使用全局变量
  2.  使用静态变量       static关键字
  3.  使用堆区

malloc/free与new/delete

  • 二者区别

  new/delete是一个表达式;malloc/free是一个库函数

  malloc只负责开辟空间,不会初始化一般会和meseert一起使用

  free可以开辟空间也可以进行初始化

 1 #include <iostream>
 2 
 3 using std::endl;
 4 using std::cout;
 5 
 6 int global = 30;//全局静态区
 7 int *test(void)
 8 {
 9     int a = 20;//栈区
10     int b = 10;
11 
12     int static c = 30;//全局静态区
13 
14     int *pa = (int*)malloc(sizeof(int) * 10);//堆区可以跨函数进行调用,需要主动进行收回 
15     *pa = 1;
16     return pa;
17 }
18 
19 int main(void)
20 {
21     int * pa = test();
22     cout << "*pa = " << *pa << endl;
23     free(pa);
24 
25 
26     int * pb = new int(2);
27     cout << "*pb = " << *pb << endl;
28     delete pb;
29 
30     int * pc = new int[10];//开辟的空间是一个数组
31     cout << "*pc = " << *pc << endl;
32     delete [] pc;
33     system("pause");
34     return 0;
35 }

 

posted on 2017-06-29 13:21  李兆祥  阅读(321)  评论(0)    收藏  举报

导航