编译器自动分配释放内存
⑴ Java把如何把内存划分为4个部分
Java把内存划分为以下4个部分:
1、栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源。
2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收。
3、静态区(datasegment)—存放全局变量,静态变量和字符串常量,不释放。
4、代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。
⑵ 栈区(stack)— 由编译器自动分配释放 ,这句话不懂,求大神指教
一块内存中,划出了一块区域,叫做栈,里面一般存放int,double等等声明的变量,当你这些声明的变量跳出代码作用域之后,编译器就会清空栈里面存放的int,double等等声明的变量
⑶ C语言中到变量与内存的关系
宏定义并不分配内存啊,它只是代换而已吧,等真正编译到宏替换的那里才分配内存,分配到栈中,如果是静态变量会分配到静态存储区,C语言好像没有const变量,应该在C++里才有吧。const变量应该和一般变量一样的分配在栈中。
⑷ C语言中,什么是栈,什么是堆
1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。局部变量,任务线程函数之类的是放在(使用)栈里面的,栈利用率高一些。其操作方式类似于数据结构中的栈。特别,栈是属于线程的,每一个线程会有一个自己的栈。
2、堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏。注意它和数据结构中的堆是两回事,分配方式倒是类似于链表,常见的就是malloc出来的都是属于堆区,就像固定出来的区域,到free的时候才释放,有点类似全局的,静态的。

(4)编译器自动分配释放内存扩展阅读
栈内存是由编译器自动分配与释放的,它有两种分配方式:静态分配和动态分配。
1、静态分配是由编译器自动完成的,如局部变量的分配(即在一个函数中声明一个int类型的变量i时,编译器就会自动开辟一块内存以存放变量i)。
2、动态分配由alloca函数进行分配,但是栈的动态分配与堆是不同的,它的动态分配是由编译器进行释放,无需任何手工实现。
