c++ new表达式
- 思考如何让一个变量在当前函数结束之后可以继续使用
- 使用全局变量
- 使用静态变量 static关键字
- 使用堆区
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 }
浙公网安备 33010602011771号