发布网友 发布时间:2022-04-25 17:41
共5个回答
热心网友 时间:2023-10-11 20:48
1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。局部变量,任务线程函数之类的是放在(使用)栈里面的,栈利用率高一些。其操作方式类似于数据结构中的栈。特别,栈是属于线程的,每一个线程会有一个自己的栈。
2、堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏。注意它和数据结构中的堆是两回事,分配方式倒是类似于链表,常见的就是malloc出来的都是属于堆区,就像固定出来的区域,到free的时候才释放,有点类似全局的,静态的。
扩展资料
栈内存是由编译器自动分配与释放的,它有两种分配方式:静态分配和动态分配。
1、静态分配是由编译器自动完成的,如局部变量的分配(即在一个函数中声明一个int类型的变量i时,编译器就会自动开辟一块内存以存放变量i)。
2、动态分配由alloca函数进行分配,但是栈的动态分配与堆是不同的,它的动态分配是由编译器进行释放,无需任何手工实现。
参考资料来源:百度百科—栈
参考资料来源:百度百科—堆
热心网友 时间:2023-10-11 20:48
在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。热心网友 时间:2023-10-11 20:49
代码中使用的普通变量、数组、指针等,使用的都是称作“堆”的内存,而调用函数时传递的参数则使用“栈”内存。这是系统管的事,一开始,编程者没必要关心这方面的内容。热心网友 时间:2023-10-11 20:49
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆:顺序随意栈:后进先出(Last-In/First-Out)热心网友 时间:2023-10-11 20:50
栈是系统自动分配内存的,堆是程序员自己动态申请的内存