Size: a a a

Rust — русскоговорящее сообществo

2020 November 19

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
MrSmith
SQL,
p.s. если общего то с++
C++ умеет выделять память на куче и уж точно умеет течь
источник

M

MrSmith in Rust — русскоговорящее сообществo
источник

M

MrSmith in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Ни один известный мне язык не предотвращает утечки памяти в общем виде. Это невозможно.
Или возможно?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Я не готов учить neut для того, чтобы выразить на нём утечку памяти.
Но нет, это невозможно — утечка памяти это когда «память освобождается позже, чем тебе бы хотелось», а компилятор не может знать, когда тебе хочется освободить память.
источник

M

MrSmith in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Я не готов учить neut для того, чтобы выразить на нём утечку памяти.
Но нет, это невозможно — утечка памяти это когда «память освобождается позже, чем тебе бы хотелось», а компилятор не может знать, когда тебе хочется освободить память.
Мне кажется, утечка, это когда память в принципе больше не может быть освобожденна до завершения программы. Потому как , если использовать ваше определение, выходит, что это дело вкуса и субъективная характеристика
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
MrSmith
Мне кажется, утечка, это когда память в принципе больше не может быть освобожденна до завершения программы. Потому как , если использовать ваше определение, выходит, что это дело вкуса и субъективная характеристика
neut в текущем виде, скорее всего, просто не предоставляет доступа к достаточному количеству системных API.
Поэтому я и поставил ограничение на «практический» язык.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Можно, например, создать пайп с буфером побольше и забить его данными
источник

M

MrSmith in Rust — русскоговорящее сообществo
Это тоже субъективно, никто не ограничивает писать на neut
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Память никогда не освободится до завершения программы. Отловить на уровне языка нельзя.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
MrSmith
Это тоже субъективно, никто не ограничивает писать на neut
Никто не пишет на neut.
источник

M

MrSmith in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Память никогда не освободится до завершения программы. Отловить на уровне языка нельзя.
Ну дак, это же не значит, что память у текает?
источник

M

MrSmith in Rust — русскоговорящее сообществo
Если статический анализ говорит, о том что данные могут быть использованы, то мы и не можем их освободить
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
MrSmith
Если статический анализ говорит, о том что данные могут быть использованы, то мы и не можем их освободить
Ну вот именно поэтому нельзя статическим анализом превентить утечки.
источник

M

MrSmith in Rust — русскоговорящее сообществo
Что значит утечка?
источник

M

MrSmith in Rust — русскоговорящее сообществo
В вашем случае это субъективное понимание реальности
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
> In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that memory which is no longer needed is not released.
> no longer needed
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
У тебя тавтологичное определение — «утечка памяти это то, что наш статический анализ считает утечкой».
источник

M

MrSmith in Rust — русскоговорящее сообществo
Нет, утечка это к примеру в чикле использовать маллок а освободить только один раз после
источник

M

MrSmith in Rust — русскоговорящее сообществo
Emmanuel Goldstein
> In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that memory which is no longer needed is not released.
> no longer needed
Ключевое тут no longer needed
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Создай два треда, сделай между ними пайп. Один тред пишет в пайп сто гигов данных, а второй читает их только после того, как выполнит программу на брейнфаке.
Если программа на брейнфаке зацикливается навечно, то буфер пайпа больше не нужен и его следует освободить. Статическому анализатору потребовалось бы решить halting problem, чтобы предотвратить эту утечку.
источник