函数中定义的对象是在栈中还是在堆中

发布网友 发布时间: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回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com