找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2372|回复: 0
打印 上一主题 下一主题
收起左侧

malloc new 和space的区别

[复制链接]
跳转到指定楼层
楼主
ID:108615 发表于 2016-3-13 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己的总结如有错误,欢迎指教,谢谢!!!


malloc  

主要使用在C语言之中   在内存的堆中申请一段空间     没有赋初值    空间
里面的值是没有清零的,   使用时最好使用memset将此段空间清零。

此函数是一个指针类型的函数,返回值是一个指针指向分配的开头的位置
但是指针的类型为   void  型的,因此需要在malloc的前面加上强制的转换。

malloc 申请的空间    直接使用free释放
例如  :
int  a   ;
a = (int*)malloc (sizeof(int));
free a;

new  

主要使用在C++语言之中   也是在堆中申请一段空间    不同的就是   在C++
语言之中,申请空间构造对象的时候,必须调用构造函数,将对象中的属性
赋初值,属性的初始值可能被赋值为零,也可能被赋值为其他的数,也可以
调用带参的构造函数。

new申请的空间不必显式的指出从new返回的指针类型,因为new知道要分配
的对象的类型。

使用new申请的空间  被调用析构函数中的delete释放
例如 :
class student
{
private:
         int  age;
         string  name;       
};
int  main()
{
        student  *s1,*s2;
         s1 = new student[100];   //构造100个对象
         s2 = new studnet ;                //构造一个对象

         delete []    s1;                  //删除100个对象
         delete    s2;                        //删除一个对象
}

space

主要使用在汇编语言之中   申请的空间是在代码段    本来代码段中的值是不能改变

的但是space申请的空间中的值可以改变,并且在申请空间的时候系统自动赋值为零
而且space可以使用%替换。

没有释放的的函数    也不需要释放

例如 :
dataspace    space     100    //申请100个数据空间





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表