• C++重载new delete


    #include <iostream>
    #include <cstdlib>
    using namespace std;
    class Foo{
        private:
            int _id;
        public:
            Foo(int id):_id(id){
                cout<<"Foo(int id) id:"<<id<<endl;
            }
            Foo():_id(0){
                
            };
        static void*  operator new(size_t size){
            void *ptr;
            cout<<"new size:"<<size<<endl;        
            ptr = malloc(size);
            cout<<"new ptr:"<<ptr<<endl;
            return ptr;
           }
        static void* operator new[] (size_t size){
              cout<<"new [] size:"<<size<<endl;
              return malloc(size);
          }
        static void operator delete (void *ptr, size_t size){
            cout<<"delete size:"<<size<<endl;
            cout<<"delete ptr:"<<ptr<<endl;
            free(ptr);
        }
        static void operator delete [](void *ptr, size_t size){
            cout<<"delete [] size :"<<size<<endl;
            free(ptr);
        }
    };
    int main(){
        
        Foo *p = new Foo(2);
        delete p;
        cout<<"------------------"<<endl;
        Foo* ptr = new Foo[3];
        delete []ptr;
        cout<<endl;
        return 0;
    }
    

    输出:
    new size:4
    new ptr:0x315a0
    Foo(int id) id:2
    delete size:4
    delete ptr:0x315a0
    ------------------
    new [] size:16
    delete [] size :16

  • 相关阅读:
    SQL注入
    SQL注入
    CSRF
    Docker官方Tomcat映像修改Server.xml
    github+jenkins+maven+docker自动化构建部署
    Docker下的Jenkins
    拿来即用学PYTHON:序
    Python-字典
    Python-列表与元组
    程序员英语轻松学1
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12537757.html
Copyright © 2020-2023  润新知