zoukankan      html  css  js  c++  java
  • c++中的new

    new的作用是在堆上申请内存空间,首先写"new",然后再写申请空间存放的数据类型,申请空间的大小取决于数据的类型,比如申请一个空间存放整型变量,那么堆会分配4byte,然后我们需要知道分配的空间在什么位置,所以返回的是指针类型

    #include<iostream>
    #include<string>
    
    class Entity
    {
    private:
        std::string m_Name;
    public:
        Entity()
        {
            m_Name = "Unknow";
        }
        Entity(const std::string name)
            :m_Name(name)
        {}
    };
    int main()
    {
        int a;
        int* b = new int;
        int* c = new int[20];//200 bytes
    
        Entity* e0 = new Entity("Wangtn");
        Entity* e1 = new Entity[50];
        std::cin.get();
    }

    new一个类的时候不光申请了这个类大小的内存空间,还调用了他的构造函数,new的本质就是一个操作符,和"+","-","="是一样的,是个运算符就说明我么可以将他过载(overload)

    本质上来说,使用new类似于malloc

    Entity* e0 = new Entity("Wangtn");
    Entity* e0 = (Entity*)malloc(sizeof(Entity));

    也就是说这两个是一样的,他们唯一的区别就是new会申请内存,然后调用构造函数,返回地址,而malloc只是申请内存空间返回地址,不调用构造函数。

    使用new后一点要delete掉,delete相当于free,还需要注意的是,使用new 数据类型[]来申请一串内存,那么这个申请的一串空间需要用delete[]来删掉

    int* b = new int;
    delete[] b;
  • 相关阅读:
    SpringBoot使用SpringSession和redis解决session共享问题(nginx反向代理)
    centos7中安装和配置nginx和keepalived
    定位
    css
    css美化
    html5
    列表,表格,媒体元素
    表单
    一期测试错题修改
    字符串
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12769536.html
Copyright © 2011-2022 走看看