发布网友 发布时间:2022-04-22 03:30
共1个回答
热心网友 时间:2024-08-14 06:39
在哪定义只能说明变量的作用域,而不能确定变量属性,确定变量属性的关键是怎么定义;
比如只是在函数中定义 int a;那这是个临时变量是在栈中的,使用完自动销毁;
比如定义是int *a; a=new int[10]; 那这个是分配在堆中的,使用完需要手动释放,防止内存泄漏。
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
热心网友 时间:2024-08-14 06:32
在哪定义只能说明变量的作用域,而不能确定变量属性,确定变量属性的关键是怎么定义;
比如只是在函数中定义 int a;那这是个临时变量是在栈中的,使用完自动销毁;
比如定义是int *a; a=new int[10]; 那这个是分配在堆中的,使用完需要手动释放,防止内存泄漏。
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。