Мне интересно, не утекает ли память при такой конструкции:
У меня есть функция, которая растеризует прямую линию между двумя заданными точками (r0, c0)-(r1, c1), также принимая указатель на буфер, в который записываются координаты (
type point struct{ r, c int}
). Возвращает буфер (не указатель). В теле функции он обычно разростается до определенного порога элементов через
append
.
func line(r0, c0, r1, c1 int, buffer *[]point) []point {
*buffer = (*buffer)[:0]
...
*buffer = append(*buffer, point{ ... })
...
return *buffer
}
Так вот, если посмотреть на адреса входящего и выходящего слайса, то они закономерно изменяются (до опр. порога). Но меня интересует, как компилятор воспринимает такую конструкцию и нет ли утечек памяти?
UPD: Перефразирую вопрос. Не ускальзывают ли предшествующие слайсы (которые малого размера) в кучу и не теряются ли там. Т.к. буфер заменяется в результате роста элементов и слайсы выводятся из ф-ции для дальнейшего использования в общую область видимости.