- 1
- 2
- 3
static char *szClassName = new char[14];
static char *szCurrentDirectory = new char[MAX_BUFFER];
static char *szNewFolder = new char[MAX_BUFFER];
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+60.6
static char *szClassName = new char[14];
static char *szCurrentDirectory = new char[MAX_BUFFER];
static char *szNewFolder = new char[MAX_BUFFER];
глобальные указатели рулят, delete нигде не вызывается
guest 20.09.2009 15:09 # 0
guest 20.09.2009 15:19 # 0
А зачем для указателей, которые храняться в static, вызывать delete?
shomeser 20.09.2009 21:30 # 0
если бы было что-то вроде static char * s = "hello";
тогда ничего не надо
Говногость 20.09.2009 21:58 # 0
Dimarius 21.09.2009 18:45 # 0
Говногость 22.09.2009 18:10 # 0
explosion_head 29.12.2009 19:36 # 0
guest 22.09.2009 13:21 # 0
Говногость 22.09.2009 18:11 # 0
guest 23.09.2009 16:59 # 0
1. память при завершении процесса по-любому освобождается потому как освобождается вся куча стандартным кодом который добавляется компилятором в исполняемый модуль
2. человек выделяет массивы из стандартных типов, о каких деструкторах идет речь? или для каждого char в массиве нужен деструктор?
3. Если бы эти массивы были выделены статически то это бы увеличело размер исполняемого модуля на величину выделенного буфера. Например если человек хочет 1 мегабайт буфера (#define MAX_BUFFER 1024) и он пишет static char buffer[MAX_BUFFER]; то считайте что ваш бинарь на метр толще после компиляции, а если делать как этот чел то результат тот же только бинарь на метр худее получается.
guest 23.09.2009 17:00 # 0
guest 23.09.2009 17:49 # 0
guest 23.09.2009 18:30 # 0
guest 24.09.2009 18:09 # 0
Открываем windows.h и видим: #define MAXPATH 256
guest 25.09.2009 10:57 # 0
guest 25.09.2009 13:38 # 0
>Для этого правда придется путь подмапливать чтобы API смогло до него добраться.
Будто бы ты это делаешь в каждой своей программе, что-бы можно было использовать более длинный путь? Это делают лишь в редкостных утилитах, которые в обыденной жизни не используют, раз Explorer.exe не дружит с длинными путями.
pushkoff 30.09.2009 15:34 # 0
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path.
guest 01.10.2009 15:24 # 0
pushkoff 01.10.2009 15:34 # 0
Функции которые возвращают (юникодные версии) путь (к моим документам и тп папкам) сами его дописывают если путь очень длинный (сам не сталкивался но видел в логах)...
guest 09.10.2009 17:25 # 0
guest 23.09.2009 17:53 # 0
Ну это как программу завершить... Да и как уже было сказано выше - не все реализации С++ одинаково полезны. В некоторых старых не освобождает память, если не чистить.
>2.человек выделяет массивы из стандартных типов, о каких деструкторах идет речь? или для каждого char в массиве нужен деструктор?
С таким же успехом могла выделиться память под обьект. Применим new, а потом не чистим и деструктор не вызываеться.
guest 23.09.2009 17:59 # 0
guest 23.09.2009 18:31 # 0
guest 23.09.2009 18:32 # 0
guest 24.09.2009 18:26 # 0
Мне что-то думаеться, что говнокодер этого говнокода как для строк static char *szClassName = new char[14]; не вызывал delete, так и для обьектов...
Не удивлюсь, если когда нибудь char *, по мере развития проекта, заменят на CString*, то вызываться delete не будет, естественно деструктор тоже не вызоветься.
Вообще не вызванный деструктор для строк не так важен, но для некоторых критических обьектов это может быть фатально... :(
explosion_head 29.12.2009 19:41 # 0
guest 23.09.2009 17:56 # 0
Да сейчас ещё и упаковщики exe'шников хорошие есть. Этот метр, заполненый нулями, упакуеться такой тулзой в пару байт. :)
guest 23.09.2009 18:28 # 0
например если сам бинарь весит всего 100 кило прибавлять к нему тонну веса как-то не серьезно
pushkoff 23.09.2009 19:38 # 0
guest 24.09.2009 18:33 # 0
guest 23.09.2009 22:31 # 0
guest 23.09.2009 18:29 # 0
а то мы тут спорим про разные платформы а скорее всего это было под виндоуз на вижуал си
guest 24.09.2009 18:36 # 0
Но не вызывать его, только из-за того, что в большинстве ОС он вызовиться сам - говнокодно.
И деструктор всё-равно сам не вызоветься. У нас не C#!
pushkoff 30.09.2009 15:39 # 0
guest 09.10.2009 17:27 # 0
guest 26.09.2009 00:52 # 0
голые указатели - это плохо.
неоправданное применение static - это плохо.
автору кода - строчно пройти курс живительной эвтаназии.
guest 26.09.2009 12:34 # 0
guest 26.09.2009 12:34 # +1
А есть одетые указатели?
pushkoff 30.09.2009 15:37 # 0
guest 03.10.2009 19:27 # 0
explosion_head 29.12.2009 19:43 # 0
guest 09.10.2009 17:27 # 0