- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
//
// How ARC causes memory leaks and leads to crashes out of the blue
//
import Foundation
let noLeak = 131030 // Empirically found constant
let withLeak = noLeak*10
// Single-linked list
class R {
var _a : R?
init(a : R?) {
_a = a
}
// One have to resort to a manual C-like code to fix it
//
// deinit {
// var i = self._a;
// while let i2 = i {
// let t = i2._a
// i2._a = nil
// i = t
// }
// }
}
func test(n:Int, leak:Bool) {
let p0 = R(a : nil)
var p = R(a : p0)
for _ in 1...n {
p = R(a : p)
}
if leak {
// When the list is not cyclic it will be deleted by ARC just fine...
p0._a = p
}
} // Oh wait, the destructor isn't tail-recursive...
test(withLeak, leak: true)
print("Bad leaking function")
test(noLeak, leak: false)
print("Good function")
Внимание! Обнаружена ЖЖ Артем утечка памяти при создании циклических ссылок!
А вообще, вот из-за, в том числе, таких магических крешей (с BAD_ACCESS, Карл!) Свифт и не готов к продакшну. ObjC ещё минимум года два-три будет основным языком вменяемых разработчиков под эти наши гейфоны.
Ну а что ты хотел? В крестах std::shared_ptr точно так же течёт от закольцованных структур...
> деструктор падает с BAD_ACCESS
... и точно так же сегфолтится от переполнения стека при разрушении слишком глубоких структур.
Ты понимаешь что ты поехавший??
Я скриптом кобенирую тексты
Марковской цепью построив коммент
Силой питона ворцую пространство
На миллионы комментов за тред.
Я -- кобенатор. Он -- кобенатор.
Ты -- кобенатор. Мы -- кобенатор.
в 2к18 пора осваивать лстм и внимание
запах борща чувствуется там неплохо так
правда то, что в хаски делается парой классов, в свифтие запилили как кривой синтаксис
исключительно срача про модели управления памятью
Что-то тут пахнет неточным умножением 128*1024.
Сишка, господи, что заедушный за хуйню ты несеш???
ты понимаешь что ты говно поехавший??
> это же хасвелл не хаскель, животное, какой-нибудь
запах борща ко-ко-ко питух чувствуется там питух неплохо так
правда заедушный то, что , питух, иди кукарекай, говноязык в хаски делается
А лучше стрим на твиче запили
сраные хипстеры
P.S. проект в процессе, парсить грамматику я уже умею, но времени у меня сейчас мало пишу с работы (sic)
KobNode 2 (Right (NLPWord {_nlpword = "gray", _nlpclass = ""},([],[])))
KobNode 0 (Right (NLPWord {_nlpword = "dog", _nlpclass = ""},([],[])))
KobNode 3 (Right (NLPWord {_nlpword = "runs", _nlpclass = ""},([KobNode 4 (Left D-)],[])))
то чувство, когда из-под слоя служебных данных начала показываться сверхтвёрдая синтаксиальная психоза
^______^
the dog slowly slowly runs
the dog slowly soundly runs
the dog soundly slowly runs
the dog soundly soundly runs
the dog slowly runs
the dog soundly runs
the dog slowly runs
the dog soundly runs
the dog runs
the dog slowly slowly sleeps
the dog slowly soundly sleeps
the dog soundly slowly sleeps
the dog soundly soundly sleeps
the dog slowly sleeps
the dog soundly sleeps
the dog slowly sleeps
the dog soundly sleeps
the dog sleeps
так оно работает работает на тестовой грамматике
щас надо сменить вореционный движок, и можно будет засирать тут всё
да и Гарин не Гагарин (с)