zoukankan      html  css  js  c++  java
  • C语言 singleton模式

      用久了C++,突然看C语言的单例模式实现,记录一下。

    C语言的实现很简单,相比C++注意的地方比较多,构造函数是private,只提供public的一个单例实现函数等等。

    #include<stdio.h>
    #include<assert.h>
    #include<stdlib.h>
    
    typedef int SINGLETON;   //自定义类型
    
    /*
    SINGLETON *singleton = NULL;  //全局变量, 静态变量也可以,看下面的实现
    SINGLETON *getSingleton(void)
    {
        if(NULL == singleton)
        {
            singleton = (SINGLETON*)malloc(sizeof(SINGLETON));
            assert(NULL != singleton);
            return singleton;
        }
        return singleton;
    }
    */
    
    //静态变量实现
    SINGLETON *getSingleton(void)
    {
        static SINGLETON *singleton = NULL;  //静态变量
        if(NULL == singleton)   //确保只要一个实现
        {
            singleton = (SINGLETON*)malloc(sizeof(SINGLETON));
            assert(NULL != singleton);
            return singleton;
        }
        return singleton;
    }
    
    
    int main()
    {
        SINGLETON *test1 = getSingleton();
        printf("test1 pointer = %p
    ", test1);
        SINGLETON *test2 = getSingleton();
        printf("test2 pointer = %p
    ", test2);
        return 0;
    }

    参考:https://my.oschina.net/itfanr/blog/361178

  • 相关阅读:
    ELK 一些截图
    AD域
    NPOI
    搭建harbor
    【【【【日常问题记录】】】】
    golang yaml配置文件解析
    golang操作mysql使用总结
    【转】mysql优化步骤
    【转】Mysql事务,并发问题,锁机制
    golang curl
  • 原文地址:https://www.cnblogs.com/raintwice/p/6780283.html
Copyright © 2011-2022 走看看