zoukankan      html  css  js  c++  java
  • 编程技巧之——使用静态局部变量完成内存的共享

     1 //有用,使用静态局部变量可完成内存的共享
     2 int* test()
     3 {
     4     static int* p = new int;
     5     return p;
     6 }
     7 
     8 int main(int argc, char* argv[])
     9 {
    10     int* b = test();
    11     *b = 0;
    12     *b += 1;
    13     int* c = test();
    14     int* d = test();
    15     int* e = test();
    16     *e += 2;
    17     cout << "b:" << *b << endl;
    18     cout << "c:" << *c << endl;
    19 
    20     if (c == b && c == d && c == e)
    21     {
    22         delete b;
    23         b = c = d = e = NULL;
    24     }
    25     else
    26     {
    27         delete b;
    28         b = NULL;
    29         delete c;
    30         c = NULL;
    31     }

    上述代码实现了p所指内存的共享,也就是说,main函数里定义的变量b,c,d,e并没有开辟新的内存,而是使用第一次调用test()函数时申请的内存。例如:第一次调用test()时,假设b指向内存为0x1111,则c,d,e所指的内存都是0x1111。

    同时,使用该方法来替代全局变量可以避免初始化顺序的依赖。

    温润如玉,坚毅如铁。
  • 相关阅读:
    观后感
    用户故事排球教练助手
    本周工作量
    本周个人作业
    个人工作量
    个人作业
    产品计划总结
    典型用户和场景总结
    排球比赛计分规则
    PowerShell ISE:Windows Server 2008 R2默认不安装
  • 原文地址:https://www.cnblogs.com/heisen/p/9198360.html
Copyright © 2011-2022 走看看