- 1
- 2
- 3
- 4
- 5
- 6
- 7
#include <vector>
template <typename T>
void FreeAll( T & t ) {
T tmp;
t.swap( tmp );
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
#include <vector>
template <typename T>
void FreeAll( T & t ) {
T tmp;
t.swap( tmp );
}
bormand 20.03.2016 17:53 # +2
inkanus-gray 20.03.2016 20:36 # −2
kegdan 20.03.2016 18:15 # −2
https://youtu.be/OxISmIlNKsM?t=29s
bormand 20.03.2016 18:18 # −1
tucvbif 20.03.2016 19:02 # 0
kegdan 20.03.2016 19:29 # +1
А я вовсе не колдунья,
Я любила и люблю!
Это мне судьба послала
Грешную любовь мою!
inkanus-gray 20.03.2016 20:02 # +1
https://youtu.be/abExstWhg-w
kegdan 20.03.2016 20:41 # −1
https://www.youtube.com/watch?v=1I8CNINZSGU
inkanus-gray 20.03.2016 20:44 # −1
https://youtu.be/xkkyR-LJJaw
kegdan 20.03.2016 20:46 # −1
inkanus-gray 20.03.2016 20:48 # −1
kegdan 20.03.2016 20:50 # −1
inkanus-gray 20.03.2016 20:52 # −1
kegdan 20.03.2016 20:54 # −1
https://www.youtube.com/watch?v=I53HDr0-Qew
Просто клевый клип
inkanus-gray 20.03.2016 20:56 # −1
https://youtu.be/CXB13vxXSMg
И бонусом ещё один:
https://youtu.be/lY9A816bPCI
kegdan 20.03.2016 20:58 # 0
inkanus-gray 20.03.2016 21:04 # −1
https://youtu.be/jXeValS-RMM
Holding you, holding you, it's in you, river flows in you.
Slow it down, slow it down, that river flows inside me too.
Holding you, holding you, it's in you, river flows in you.
Waiting now, waiting now, just be strong, you will make it through.
kegdan 20.03.2016 21:10 # −1
inkanus-gray 20.03.2016 21:15 # −1
kegdan 20.03.2016 21:18 # −1
inkanus-gray 20.03.2016 21:23 # −1
Though we are weak we understand.
It's time to heed the water's call.
No rock could stand the waterfall.
https://youtu.be/aNOXuj3eErM
Только пидару не показывайте.
kegdan 20.03.2016 21:28 # −1
Life is a waterfall !
we're one in the river
and one again after the fall !
inkanus-gray 20.03.2016 21:33 # −1
Всё время спешить неизвестно куда?
Достаточно знать, что нужно бежать —
На это она и вода.
https://youtu.be/xXBPO8fHs2k
kegdan 20.03.2016 21:38 # 0
и в догонку
https://www.youtube.com/watch?v=pKTUbjN1B5g
inkanus-gray 20.03.2016 21:42 # −1
kegdan 20.03.2016 21:45 # −1
inkanus-gray 20.03.2016 21:47 # −1
https://youtu.be/CcxtLJHuV9Q
kegdan 20.03.2016 21:50 # −1
https://www.youtube.com/watch?v=NIy7bTMJ75M
inkanus-gray 20.03.2016 21:53 # −1
Я на улице одна.
https://youtu.be/46xO8Nx6ZXI
kegdan 20.03.2016 21:57 # −1
тащемта, чат кутежа
Паук крайне подозрителен. Видимо уже дунул и дернул
inkanus-gray 20.03.2016 21:59 # −1
https://youtu.be/KD4zTi0D460
Но ведь в жизни солдаты мы,
И уже на пределах ума
Содрогаются атомы,
Белым вихрем взметая дома...
kegdan 20.03.2016 22:04 # −1
кот на 1:54 шикарен
kegdan 20.03.2016 21:03 # 0
3_14dar 20.03.2016 23:07 # 0
TarasB 21.03.2016 10:29 # 0
tucvbif 21.03.2016 10:36 # 0
Antervis 21.03.2016 10:53 # +1
Antervis 21.03.2016 06:41 # 0
bormand 21.03.2016 07:26 # 0
У вектора capacity только так срезать можно. И function только так можно почистить...
kurwa 21.03.2016 21:58 # +2
2016 год на дворе.
bormand 21.03.2016 22:01 # 0
LispGovno 22.03.2016 08:36 # −1
Вот вам от меня:
Явно ID, но в моем случае работало. Всем няшек и бобра!
Antervis 22.03.2016 10:05 # +2
LispGovno 22.03.2016 10:30 # 0
Antervis 22.03.2016 10:59 # +2
shrink_to_fit, как уже было сказано, может предложить лизнуть тунца: "It depends on the implementation if the request is fulfilled.".
а reserve(0) уж точно предложит вкусить лососца: "If new_cap is greater than the current capacity(), new storage is allocated, otherwise the method does nothing."
Soul_re@ver 24.03.2016 10:51 # 0
Компилятор вправе превратить свап с временной переменной в "вызвать деструкторы для всех элементов, не делать больше ничего" если всё заинлайнится. Так что лизнуть тунца можно в любом случае.
Antervis 24.03.2016 11:05 # +3
короче, серебряная пуля:
Soul_re@ver 24.03.2016 11:14 # +1
Даже серебрянная пуля не поможет. Хотя она и не соберётся, так как swap с волатильными векторами не работает.
Antervis 24.03.2016 12:01 # 0
Soul_re@ver 24.03.2016 12:02 # 0
LispGovno 24.03.2016 12:11 # 0
Antervis 24.03.2016 12:15 # 0
1024-- 24.03.2016 18:15 # +1
> не делать больше ничего
Погодите, а из этого не следует, что компилятор может официально сгенерировать программу, в которой память будет безбожно течь? Скажем, вообще все освобождения выпилить, только код деструкторов оставить.
Soul_re@ver 24.03.2016 19:42 # 0
Оптимизировать выделение памяти компиляторы умели давно ( http://goo.gl/RZ2FVt , советую посмотреть, что делает гцц4.8), просто в новом стандарте разрешили при этом игнорировать побочные эффекты, чтобы всякие логирующие аллокаторы не ломали оптимизацию.
1024-- 24.03.2016 20:31 # +1
Я ассемблерные штуки почти не знаю, но это же питушня какая-то. Насколько я понял, компилятор из тормозного кода с доступом в потенциально чужую память сделал быстрокод с закэшированным результатом. И если добавить main, который печатает foo(1), внутри сразу распечатается 55 без вызова всяких там функций.
Но если добавить if(ip == NULL) return 0; после malloc, то malloc будет вызываться всегда только ради проверки наличия памяти и foo не заинлайнится:
bormand 24.03.2016 20:35 # 0
Зачем? Вызов ненастоящего malloc'а всегда успешен... Значит проверку на нулл можно с чистой совестью выкинуть.
1024-- 24.03.2016 20:41 # +1
Так и поехать можно.
Его "ненастоящность" как-то зафиксирована? (макросы/стандарт/директивы) Или человек компилирует в GCC x.x.x, видит, что соптимизировалось и добавляет комментарий
Soul_re@ver 24.03.2016 21:01 # 0
Компилятором. Он же видит, что можно вызов настоящего malloc заменить на ненастоящий. Затем замечает, что ненастоящий malloc всегда успешен и выкидывает проверку.
Кстати, шланг оптимизирует даже с проверками.
bormand 24.03.2016 21:06 # +4
Soul_re@ver 24.03.2016 21:39 # +2
bormand 24.03.2016 21:55 # +3
kegdan 24.03.2016 21:18 # +3
и он выделяет ненастоящую память?
naxoM 24.03.2016 22:02 # 0
3.14159265 24.03.2016 21:52 # 0
Ты будешь в неплохой компании: с wvxvw и Тарасом.
bormand 22.03.2016 19:01 # +4
TarasB 24.03.2016 11:18 # +5
bormand 24.03.2016 18:16 # +6