- 1
- 2
- 3
- 4
- 5
char* to_str(int i) {
char* s = malloc(12);
sprintf(s, "%d", i);
return s;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
char* to_str(int i) {
char* s = malloc(12);
sprintf(s, "%d", i);
return s;
}
Как в сишке без RAII принято жить? Пиздец какой-то. Буфер в функцию передавать?
Что мешает завезти RAII в сишку?
RAII сразу требует охулиард всего, так как копирование данных уже больше не копирование, а вызов какого-то кода. А это перехучка половины языка
* передать ей размер, и попросить создать
* создать самому
Кстати, в твоем случае можно наверное выделить размер на стеке. Максимальный размер строки INT_MAX в общем понятен заранее, не?
Можно иметь один статический буфер, содержимое в нём хранится до следующего вызова этой функции. Если его нужно сохранить, сам его копируешь куда-нибудь.
Но можно просто иметь по буферу на поток.
а если потоки создаются, прости господи, динамически?
а удалять как?
У TLS слотов деструкторы есть (см. FlsAlloc, pthread_key_create).
> как в фугнкции узнать про создание потока
Слоты у новых тредов рождаются с NULL. Так что просто проверить на NULL и выделить память.
\(=^~^=)/