内存的分配策略

了解内存分配的几种策略:
1、静态的
静态的存储区:内存在程序编译的时候就已经分配好,这块的内存在程序整个运行期间都一直存在。它主要存放静态数据、全局的static数据和一些常量。
2、栈式的
在执行函数(方法)时,函数一些内部变量的存储都可以放在栈上面创建,函数执行结束的时候这些存储单元就会自动被释放掉。栈内存包括分配的运算速度很快,因为内置在处理器的里面的。当然容量有限。
3、堆式的
也叫做动态内存分配。有时候可以用malloc或者new来申请分配一个内存。在C/C++可能需要自己负责释放(java里面直接依赖GC机制)。在C/C++这里是可以自己掌控内存的,需要有很高的素养来解决内存的问题。java在这一块貌似程序员没有很好的方法自己去解决垃圾内存,需要的是编程的时候就要注意自己良好的编程习惯。

区别:堆是不连续的内存区域,堆空间比较灵活也特别大。栈式一块连续的内存区域,大小是有操作系统觉决定的。堆管理很麻烦,频繁地new/remove会造成大量的内存碎片,这样就会慢慢导致效率低下。对于栈的话,他先进后出,进出完全不会产生碎片,运行效率高且稳定。

public class Main{
    int a = 1;//堆里面
    Student s1 = new Student();//堆里面
    public void XXX(){
        int b = 1;//栈里面
        Student s2 = new Student();//栈里面
    }
}
1.成员变量全部存储在堆中(包括基本数据类型,引用及引用的对象实体),因为他们属于类,类对象最终还是要被new出来的。
2.局部变量的基本数据类型和引用存储于栈当中,引用的对象实体存储在堆中。因为他们属于方法当中的变量,生命周期会随着方法一起结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言可以通过使用动态内存分配函数来实现内存分配策略。在C中,我们可以使用malloc, calloc, realloc和free这几个函数来动态分配和释放内存。 malloc函数用于分配一块指定大小的内存。它接收一个参数,表示需要分配内存的大小(以字节为单位),并返回一个指向这块内存的指针。如果分配失败,则返回NULL。 calloc函数也用于分配一块内存,但是与malloc不同的是,它还会将分配内存清零。它需要两个参数,第一个参数表示要分配内存块数,第二个参数表示每个内存块的大小。它返回一个指向这块内存的指针,如果分配失败,则返回NULL。 realloc函数用于调整已分配内存的大小。它接收两个参数,第一个参数是一个已经分配内存的指针,第二个参数表示需要重新分配内存的大小。该函数会返回一个指向重新分配内存的指针,如果内存不足或分配失败,则返回NULL。 free函数用于释放以前通过malloc、calloc或realloc函数分配内存。它接收一个参数,表示需要释放的内存的指针。使用free函数后,被释放的内存可以再次用于分配内存分配策略可以根据具体的需求进行设计和实现。例如,可以通过循环调用malloc函数来动态分配多块不同大小的内存,并在使用完后通过调用free函数来逐个释放这些内存块。还可以使用realloc函数来调整已经分配内存的大小,以适应不同的需求。另外,还可以使用calloc函数来分配一块已经初始化为0的内存块。 通过合理使用这些内存分配函数,可以实现不同的内存分配策略,以满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值