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

    +172

    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
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    //уничтожение буфера
    void delbuf(void* &bf, char ntype)
    {
    	if (ntype=='C')
    	{
    		if (bf!=(char*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='B')
    	{
    		if (bf!=(BYTE*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='I')
    	{
    		if (bf!=(int*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='F')
    	{
    		if (bf!=(double*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='D')
    	{
    		if (bf!=(double*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='W')
    	{
    		if (bf!=(WORD*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='L')
    	{
    		if (bf!=(long*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='S')
    	{
    		if (bf!=(short*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='R')
    	{
    		if (bf!=(DWORD*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	return;
    }

    86 строк вместо простого delete [] bf

    Запостил: glprizes, 02 Февраля 2011

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

    • Главное, привести указатель к нужному типу при проверке на 0!

      Красота!
      Ответить
    • >86 строк вместо простого delete [] bf
      и обнуление указателя
      Ответить
    • А пачиму не чирез свич по ntype?
      Ответить
      • потому что он здесь не нужен.
        Ответить
      • Может ещё case из паскаля применительно к этому коду вспомните? :D
        Ответить
        • Это уже не модно.
          Ответить
          • >Это уже не модно.
            Да. Дельфи и Паскаль устарел...
            Ответить
            • странно, что С++ вовсе нет. Хотя этот язык как ни один другой любит программисту ставить подножки
              Ответить
              • Потому и не устарел.
                Паскаль же фигня, бегин, енд, всё понятно, а вот в С++ нихера не понятно, наверное, С++ - это круто. Да ещё и сколько опасностей, приключений (с отладкой)! С++ - это для настоящих мужчин, которым нравится ходить по лезвию бритвы!
                Ответить
                • D был бы отличной заменой, будь для него больше тулзов
                  Ответить
                  • Не будь в нём сборщика мусора.
                    Ответить
                    • есть, но это для тех, кто не умеет убирать за собой. Для аккуратных есть возможность им и не пользоваться, а удалять явно
                      Ответить
            • Тоже решил поразвлекаться?
              Ответить

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