- 1
- 2
- 3
- 4
- 5
- 6
char* getID(){
uint32_t id = calcuate_id(); // Непринципиально, сложные какие то вычисления
static char str[16] = {0};
sprintf(str, "%ud", id);
return str;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+135
char* getID(){
uint32_t id = calcuate_id(); // Непринципиально, сложные какие то вычисления
static char str[16] = {0};
sprintf(str, "%ud", id);
return str;
}
На самом деле кусок модуля к nginx. Вычисляетися целое число, преобразуется в десятичное представление....
А вообще этот код не потокобезопасен. Да и в одном потоке могут возникнуть проблемы, если не задокументирован тот факт, что результат живет только до следующего вызова.
Хотя тогда результат могут и освободить с помощью free...
И указатель или нет - разница невелика.
Их отделяет всего один символ: & или *.
И аналогичной херни в той же libc полно...
Остальное по поводу free и нежелательной многопоточности вполне документировано, я же написал, это кусок модуля для nginx
Проверяли? :) Вот лишнее d оно пишет, да. Но откуда там возьмется 2345?! printf же сам всегда терминирует строку нулем. Или в api nginx'овых модулей не нультерминейтед строки, и для него важен этот хлам после нолика?