首页 > 编程知识 正文

页式和段式的内存管理有什么区别,malloc与new区别

时间:2023-05-03 21:57:05 阅读:146335 作者:1146

malloc/free和new/delete的共同点是:必须从堆中申请空间并手动释放。 申请连续的空间通常是两个g,不同之处是:

1.malloc和free是函数,new和delete是操作员

2.malloc申请的空间不初始化,new可以初始化

3.malloc在申请空间时,必须手动计算空间大小并传递。 new只是跟在空间类型之后。 对于多个对象,可以在中指定对象的数量。

4.malloc的返回值类型为void*,使用时必须用力转动。 不需要新闻。 这是因为new后面跟着空间的类型

5 .如果5.malloc在空间申请中失败,则返回的是NULL,因此在使用时必须确定为空。 虽然不需要新闻,但是新闻需要捕捉异常

6 .申请自定义类型的对象时,malloc/free只会打开空间,而不会调用构造函数和析构函数。 另一方面,new在申请空间后调用构造函数以完成对象初始化,delete在释放空间前调用析构函数以完成空间中资源的清理

7.malloc/new申请空间本质上给了你一个内存的实用权,不再使用空间,free/delete释放内存空间的本质是,将使用权返还给系统,系统可以重新分配给其他人。

全局变量位于数据段的静态全局变量位于静态区域

静态局部变量静态区域局部变量堆栈区域

使用char* p=new char[100]请求内存,然后使用delete p释放。 对于嵌入式,delete相当于free;对于自定义类型,需要delete []来释放堆上的空间。

堆不能静态分配内存,只能动态申请

堆栈可以用函数_alloca动态分配,但不能用free或delete释放分配的空间

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。