1. C++ / Говнокод #11588

    +28

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    byte* GetBuffer0(bool free = false)
    {
    	static std::auto_ptr<byte> transferBuffer;
    
    	if (free)
    	{
    		delete [] transferBuffer.release();
    	}
    	else
    	{
    		if (!transferBuffer.get())
    		{
    			transferBuffer.reset(new byte[BUFFER_SIZE]);
    		}
    	}
    	return transferBuffer.get();
    }
    
    byte* GetBuffer1(bool free = false)
    {
    	static std::auto_ptr<byte> transferBuffer;
    
    	if (free)
    	{
    		delete [] transferBuffer.release();
    	}
    	else
    	{
    		if (!transferBuffer.get())
    		{
    			transferBuffer.reset(new byte[BUFFER_SIZE]);
    		}
    	}
    	return transferBuffer.get();
    }

    legacy-дебри

    Запостил: ni3_inv, 14 Августа 2012

    Комментарии (8) RSS

    • Найдите 10 отличий? ;)
      byte *GetBuffer1(bool free=false)
      {
          return GetBuffer0(free);
      }
      Ответить
    • можно сделать и так, но зачем??
      template <size_t N>
      byte * get_static_buffer(bool free = false)
      {
          static byte * static_buf = new byte[BUFFER_SIZE];
       
          if (free) {
              delete[] static_buf;
              static_buf = 0;
          }
          else if (!static_buf)
              static_buf = new byte[BUFFER_SIZE];
      
          return static_buf;
      }
      Ответить

    Добавить комментарий